リモートノードに大量のメッセージを送信し、すぐに電話erlang:disconnect_node/2
をかけて接続を切断した場合、一部のメッセージがネットワークを通過しない可能性はありますか?言い換えれば、そのメソッドは、待機中のメッセージに関係なく、残忍な切断を実行しますか?
質問する
98 次
1 に答える
3
いいえ、2つのローカルノードがあっても!
セットアップ:ノードを取得しa@super
ました。魔女にダミーの受信印刷ループが実行され、に登録されていa
ます。別のノードで、
(b@super)1> [{a, a@super} ! X || X <- lists:seq(0,10000)], erlang:disconnect_node(a@super).
つまり、多くのメッセージ、そして残忍な切断です。
結果:受信者は、10回の実行で1回だけ10001メッセージ全体を出力しました。
したがって、受信者がすべてのメッセージを受信したという保証はありません。別のテクニック(erlangの初心者、申し訳ありません)を使用するか、切断する前にackメッセージを使用する必要があります。
于 2012-09-03T23:35:23.333 に答える