ブロックチャンネルvs非同期メッセージ通
-
19-09-2019 - |
質問
って二つの方法は"メッセージ通信".一見Gettextを使用以外のStacklessます。かわいの差
Gimp用ドキュメスタイル-メッセージを送信待ちのメールボックスの受けます。からあれを除去しFIFOます。最初の工程に送るメッセージは無料になります。
Pythonのスタイルの処理キューに送信処理B.Bても行動で凍結されるまでBを頂きます。一度億開始読み取りチャネル、データを送信し、その両方。
今のプランは、Gimp用ドキュメ法れていることか阻止プロセス。場合はBになることは避けてくださて、では現在も続いています。しかしい気がついたプログラムもあって書きることは可能ではないかGettextのメッセージボックスまでの数は千件のメッセージからの流入によりメッセージは以上の流出を意味します。
今はまだ書き大きなプログラムのいずれかの枠組み/言語なった経験はこの、なかでも安心です。
はい、ごきげんよう、トメ子です抽象が、私もも抽象的応答となります。
解決
私の経験ではGimp用ドキュメプログラミングが期待する高いメール率は、より速く生産者により消費者)を追加したり自分で流れます。単純なシナリオ
- 消費者ます:送信メッセージを待っack、繰り返す。
- プロデューサー:お待ちメッセージを送信ackが受信したメッセージ、加工を繰り返す。
でも反転、プロデューサーの待機のための消費者にはN次のメッセージ
これらのアプローチやその他の流量制御可能で隠す機能が、最初は主にてご用意 gen_server:call/2,3
に対する gen_server
OTPの行動です。
い非同期メールとして、Gimp用ドキュメとしてより良いアプローチこの遅延が高いでしょうかを避けるためには同期の送信時間ます。できるその巧みな構成を実施する方法に流れます。う必要がackから、消費者のために毎Nメッセージプロデューサーに送では送信"pingの私を受けた、またはこの"メッセージがり、カウントpingます。
他のヒント
大まかに言えば、これは無制限のキューと境界のあるキューです。スタックレスチャネルは、0サイズのキューの特殊なケースと見なすことができます。
境界のあるキューは、デッドロックする傾向があります。 2つのスレッド/プロセスは、どちらも完全なキューを使用して、互いにメッセージを送信しようとしています。
縛られていないキューは、より微妙な障害になります。あなたが述べたように、大きなメールボックスは待ち時間の要件を満たしていません。十分に進むと、最終的にオーバーフローします。無限のメモリのようなものはないので、それは実際には、完全なときにプロセスを中止する大きな制限を備えた単なる境界のあるキューです。
どちらが一番いいですか?言うのは難しいです。ここには簡単な答えはありません。