Erlang中的ets的选项中有一个是protected,但是我测试出来感觉有错误。

发布于 2021-11-21 23:20:01 字数 557 浏览 832 评论 2

Erlang中的ets的选项中有一个是protected,但是我测试出来感觉有错误,希望大家帮忙看看。。

test_ets() ->
    spawn(?MODULE, dd, [self()]),
    receive
        {xx, Id} ->
            io:format("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ~n", []),
            T = ets:tab2list(Id),//这句话报错,protected不是共享读吗?
            zdebug:log("xx is ~p~n", [T])
    end.

dd(Parent) ->
    Id = ets:new(session, [set, protected, {keypos, 1}]),
    ets:insert(Id, {1, "A"}),
    Parent ! {xx, Id},
    Id.



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情绪失控 2021-11-28 03:19:52

When the process terminates, the table is automatically destroyed.

http://www.erlang.org/doc/man/ets.html

别再吹冷风 2021-11-27 21:24:26

估计是子进程结束 导致这个表已经无效了 所以才报错

你可以试试子进程不退出的情况

dd(Parent) ->
    Id = ets:new(session, [set, protected, {keypos, 1}]),
    ets:insert(Id, {1, "A"}),
    Parent ! {xx, Id},
    receive
        _ ->
            ok
    end.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文