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]).