Erlang User's Guideでは、 send 演算子について次のように説明されています。
8.9 送信
Expr1 ! Expr2
で指定されたプロセスにの値を
Expr2
メッセージとして送信しますExpr1
。の値Expr2
は、式の戻り値でもあります。
Expr1
pid、登録名(atom)、またはtuple{Name,Node}
に評価される必要があります。Name
はアトムでNode
あり、ノード名でもあり、アトムでもあります。
Expr1
が名前として評価されたが、この名前が登録されていない場合、実行badarg
時エラーが発生します。- pid が存在しないプロセスを識別したとしても、pid へのメッセージの送信は決して失敗しません。
- 分散メッセージ送信、つまり
Expr1
、タプル{Name,Node}
(または別のノードにある pid) に評価される場合も、失敗することはありません。
分散メッセージ送信の場合{Name,Node}
、リモート ノードまたはプロセスのコードから、最初のアトムが何を表しているのかが明確ではありません。
あなたの助けに感謝します。