0

私のコードでは、単一のキーに対して複数の値を格納できる ETS のバッグ タイプを利用したいと考えています。ただし、insert が実際に新しい値を挿入するかどうか (つまり、挿入された値を持つキーがバッグに存在するかどうか) を知ることは非常に便利です。

ETS の型セットでは、ets:insert_new を使用できますが、バッグのセマンティクスは異なります (私の強調):

この関数は、insert/2 とまったく同じように機能しますが、例外として、同じキーを持つオブジェクトを上書きする (set または Ordered_set の場合) か、テーブルに既に存在するキーを持つオブジェクトを追加する(bag と duplicate_bag の場合) という点が異なります。 、単に false を返します。

1回の呼び出しでそのような機能を実現する方法はありますか? ルックアップとそれに続くオプションの挿入によって実現できることは理解していますが、同時アクセスのパフォーマンスが低下する可能性があるのではないかと心配しています。

4

0 に答える 0