在我的代码中,我想利用 ETS 的包类型,它可以为单个键存储多个值。但是,知道插入是否真的插入了一个新值(即插入的带有值的键是否存在于包中)将非常有用。
使用 ETS 类型集,我可以使用 ets:insert_new,但 bag 的语义不同(强调我的):
此函数的工作原理与 insert/2 完全相同,不同之处在于不是用相同的键覆盖对象(在 set 或 ordered_set 的情况下)或使用表中已经存在的键添加更多对象(在 bag 和 duplicate_bag 的情况下) ,它只是返回false。
有没有办法通过一个电话来实现这样的功能?我知道它可以通过查找后跟可选插入来实现,但我担心它可能会损害并发访问的性能。