問題タブ [ets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - erlangプロセス間マルチキャスト
erlangでチャットサーバーを開発しようとしていますが、プロセスのグループ間でメッセージをブロードキャストしたいのですが、3つの選択肢があります。
- グループの残りの部分にメッセージを送信するマスタープロセスにすべてのメッセージを送信します。これは私にとってボトルネックのように見えます!。
- グループのすべてのpidを含むグローバルetsテーブルを使用します(過度のコピー)。
- updマルチキャストを使用します。
- 1と同じpgモジュール。
最善のアプローチは何ですか、他の選択肢はありますか?
erlang - Erlang 共有 ETS テーブル
Erlang ETS テーブルを異なるプロセス間で共有できますか? したがって、異なる Erlang 実行システムで 2 つのプロセスを実行している場合、1 つの ETS テーブルで行ったすべての変更がもう 1 つのテーブルに反映されるように、どうにかしてそれらをリンクできますか?
erlang - ets が私のテーブルを無作法に削除するのはなぜですか?
ets で存在しないテーブル (t3) を検索した後、ユーザーが作成したすべてのテーブル (t1 および t2) が削除されます。それはバグですか、それとも ets の奇妙な機能ですか?
これがEshellのコードです。
ここで何が問題なのか教えてくれる人はいますか?
erlang - erlang ets select 奇妙な動作
Erlang で ets:select を使用すると奇妙な動作が発生します。
正しい select ステートメント (下の 4 と 5) を達成した後、ステートメントでエラーを犯し (下の 6)、4 と 5 と同じステートメントを再試行しましたが、機能しなくなりました。
何が起こっている ?何か案が ?
私のetsテーブルは破壊されましたか?それはetsのバグでしょうか?
ありがとうございました。
erlang - 2 つのプロセスで ETS テーブルを共有しますか?
あるプロセスで ETS テーブルを作成し、それを別のプロセスで使用したいと考えています。2 番目のプロセスで ETS テーブルを「開く」にはどうすればよいですか? マニュアル ページに適切な機能が見つかりませんでした。
erlang - Erlang-ETSを使用したリングベンチマーク
N個のプロセスがあり、それらを介してM回メッセージを送信するリングベンチマークを作成しようとしています。プロセスのpidをETSテーブルに保存したいと思います。
電話:
loop / 2がエクスポートされるので、なぜこのエラーが発生するのかわかりません。
file-io - Erlang では、ネストされたタプルに改行を含めずに ets:tab2list を使用できますか?
私はetsを作成しています。
次の形式でデータを入力しています。
これらをそれぞれ別の行としてテキスト ファイルに保存したいと思います。私は次の方法でこれを試みています:
これは与える:
次にio:format
、ファイルに保存するために使用します。
しかし、3 番目のタプル (ネストされたタプルの先頭と)myets
に改行を入れずにテキスト ファイルに保存する簡単な方法はあるのでしょうか?oldsetting
newsetting
performance - Erlang ETS テーブルのすべての値を更新する最速の方法は何ですか?
ETS テーブル内のすべてのタプルに関数を適用したいと思います。
テーブルはセットで、各キーは 1 回だけ表示されます。
私のテーブルには、同じタイプのタプルのみが含まれています。
すべての値は::integer()
私がしたいのは、特定の値を経過させ、すべてのタプルを関数で更新することですapply_vector/2
可能な解決策
を使用する
ets:foldl
と、折りたたみ中に挿入がトラバースされ、無限 (非常に長い) ループが発生する可能性があります。を使用して新しいタプルを準備し、
ets:foldl
リスト全体を挿入できます。新しいテーブルに挿入して、古いテーブルを新しいテーブルに置き換えることはできますが、テーブルへのアクセスを gen_server への呼び出しで制限したくありません。テーブルにはいつでもアクセスできる必要があります。
ets:update_element
XとYを更新するためにVXとVYの値を読む必要があるので使えません。いくつかの反復子ユーティリティがあることは知っていますが、楽しみを渡すことを誰も許可していないようです。
この更新は 1 ~ 5 秒ごとに行う必要があります。では、10個のタプルで最も効率的なソリューションはどれですか? 100個のタプルで?もっと?
ありがとう !
ボートのリストを保持します。キーはボート ID、X と Y は地理座標、VX と VY は動きのベクトル (1 秒間の変位) を表します。Elapsed は比率であり、最後の更新からの秒数です。テーブルは、各ボートの位置をいつでも知るのに役立ちます。
erlang - ets テーブルの継承と trap_exit メッセージ
「Learn You Some Erlang」を読んで、メッセージを受け取る特定の ets テーブルのプロセス継承者を設定できることを発見しました。
テーブルを所有しているプロセスが終了したとき。
しばらくして、そのような機能を使用して ets テーブルを保持する方法に関する別の提案が記載されたこの投稿を見つけました。
最後の方法では、ユーザーは、テーブルを所有しているピア プロセスが停止しているかどうかを知るために、trap_exit も使用することを提案しています。ここで私の質問は、どのメッセージを最初に受け取るかです。ets テーブルに関するメッセージですか、それともピア プロセスのクラッシュに関するメッセージですか?
終了メッセージを処理する必要は本当にありますか? ets メッセージを受信すると、それを処理するピア プロセスが完全に機能していないことがわかります。それともしばらく生きているのでしょうか?
erlang - ets:match が期待値を返さない
ets:match に問題があります。次のコードでは、ets:match が 1 つの見つかった値を返すことを期待していますが、何も返されません。なんで ?