メッセージ パッシング関数
非同期エージェント ライブラリには、コンポーネント間でメッセージを渡すことができる関数がいくつか用意されています。
これらのメッセージ パッシング関数は、さまざまなメッセージ ブロックの型と共に使用されます。 同時実行ランタイムによって定義されるメッセージ ブロックの型の詳細については、「非同期メッセージ ブロック」を参照してください。
セクション
このトピックでは、次のメッセージ パッシング関数について説明します。
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
の各関数の使用例については、次のトピックを参照してください。
[トップ]
関連項目
非同期エージェント ライブラリ
非同期メッセージ ブロック
send 関数
asend 関数
receive 関数
try_receive関数