3

共有状態に使用したい場合、ETS テーブルへの挿入を待機するための確立されたメカニズムはありますか?

私は mnesia サポート テーブル イベントを知っています。必要なデータがロードされるまでプロセスが待機できるように、同様のメカニズムがプレーンな ETS に役立つと考えていました。これを行う唯一の方法は、ループをスピンして、指定されたキーが到着するまで継続的に要求することだと思いますが、それは非常に非効率的です。私はむしろメッセージのコールバックを受け取りたいです。私と ETS の間にプロセスを挿入すると、問題を先送りしたことになります。

4

3 に答える 3

3

最も簡単な回避策は、gen_serverプロセスを開始し、それを介してすべての挿入要求をプロキシすることです。次に、コールバックを状態に保持することでコールバックを登録しgen_server、挿入されたキーがパターンと一致したときに呼び出すことができます。専用のスーパーバイザーを許可するために、別のアプリケーションで実行することもできます。

于 2016-02-22T10:23:12.480 に答える
1

ETS にはイベントの概念がありません。

ただし、リーダー プロセスを 'receive' 句に入れて、データが読み込まれた後にライター プロセスがメッセージをリーダーに送信するようにすることで、説明したことを達成できます。

于 2016-02-21T23:32:05.150 に答える