Erlang中文手册(Erldoc.com)  »  ets  »  give_away/3
Erlang并发编程 Erlang/OTP设计原理 Erlang/OTP[pdf] Mnesia用户手册[pdf] Erlang完整手册[en] 官网手册[en] 模块列表 方法列表 随机 Erlang中文社区(BBS) 美女图库

ets:give_away/3

改变一个表的拥有者

用法:

give_away(Tab, Pid, GiftData) -> true

让进程 Pid 成为表 Tab 的新的拥有者。如果设置成功,信息 {'ETS-TRANSFER',Tab,FromPid,GiftData} 将会被发送到新的所属进程上。

进程 Pid 进程必须是存活,本地的,且并还没有表拥有。当前调用着的进程必须是表的拥有进程。

NOTE:give_away 并不影响表的 heir 操作。例如,表的拥有者可以将 heir 设成自己,放弃表的所有权,然后在表的新的拥有进程崩溃时重新继承表的拥有权。

Pid = spawn(fun () -> receive foo -> ok end end),
Tab = ets:new(test_ets_new, [public]),
ets:give_away(Tab, Pid, []).
Pid = spawn(fun () -> receive foo -> ok end end),
Tab = ets:new(test_ets_new, [public]),
Owner1 = ets:info(Tab, owner),
ets:give_away(Tab, Pid, []),
Owner2 = ets:info(Tab, owner),
io:format("Owner1 ~p Owner2 ~p~n", [Owner1, Owner2]).
阿里云 - 最高1000元通用代金券立即可用
沪ICP备13037221号-9