メッセージ パッシング関数
更新 : 2011 年 3 月
非同期エージェント ライブラリには、コンポーネント間でメッセージを渡すことのできる関数がいくつか用意されてします。
これらのメッセージ パッシング関数は、さまざまなメッセージ ブロックで使用されます。 同時実行ランタイムで定義されているメッセージ ブロックの種類の詳細については、「非同期メッセージ ブロック」を参照してください。
セクション
このトピックでは、次のメッセージ パッシング関数について説明します。
send および asend
receive および try_receive
例
send および asend
Concurrency::send 関数は指定されたターゲットにメッセージを同期的に送信し、Concurrency::asend 関数は指定されたターゲットにメッセージを非同期的に送信します。 send 関数と asend 関数は、いずれもターゲットがメッセージを最終的に受け入れるか拒否することを示すまで待機します。
send 関数は、ターゲットがメッセージを受け入れるか拒否するまで待機してから制御を返します。 send 関数は、メッセージが配信された場合は true を返し、それ以外の場合は false を返します。 send 関数は同期的に動作するため、send 関数は、ターゲットがメッセージを受信するのを待ってから制御を返します。
一方、asend 関数は、ターゲットがメッセージを受け入れるか拒否するのを待つことなく制御を返します。 代わりに、asend 関数は、ターゲットがメッセージを受け入れ、最終的にそれを受け取る場合に true を返します。 それ以外の場合、asend は false を返し、ターゲットがメッセージを拒否したか、メッセージを受け取るかどうかの決定を延期したことを示します。
[ページのトップへ]
receive および try_receive
Concurrency::receive 関数と Concurrency::try_receive 関数は、指定されたソースからデータを読み取ります。 receive 関数はデータが使用できるようになるのを待ちますが、try_receive 関数は即座に制御を返します。
receive 関数は、データの処理を継続する必要がある場合に使用します。 try_receive 関数は、現在のコンテキストをブロックしてはならないか、データの処理を継続する必要がない場合に使用します。
[ページのトップへ]
例
send、asend、および receive の各関数の使用例については、次のトピックを参照してください。
[ページのトップへ]
参照
参照
概念
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2011 年 3 月 |
send 関数と asend 関数の違いを明記。 |
カスタマー フィードバック |
2010 年 8 月 |
例へのリンクを追加。 |
情報の拡充 |