具体来说, :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/