具体来说, :ets.tab2list:ets.file2tab 。这些函数是否“快照”了表状态,或者在这些函数完成时其他操作是否可以交错读取和写入?

最佳答案

基于文档 here :



在哪里



与您的问题特别相关:



编辑

ets:tab2list/1 调用 ets:match_object/2 ,它是一个用 C 实现的内置函数 (BIF)。实现 here 使用的是 BIF ets_select2 ,它是 ets:select/2 的实现。
ets:file2tab 最终调用 load_table/3 ,它只使用 ets:insert/2

ets:tab2file/3 ets.erl 的代码使用 ets:select/3 获取第一个块,然后使用 ets:select/1 获取表中的其余块。

关于erlang - ETS 批量操作是原子操作吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45406803/

10-13 02:06