2

リモートノードに大量のメッセージを送信し、すぐに電話erlang:disconnect_node/2をかけて接続を切断した場合、一部のメッセージがネットワークを通過しない可能性はありますか?言い換えれば、そのメソッドは、待機中のメッセージに関係なく、残忍な切断を実行しますか?

4

1 に答える 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 に答える