次の方法で共有


メッセージ パッシング関数

非同期エージェント ライブラリには、コンポーネント間でメッセージを渡すことができる関数がいくつか用意されています。

これらのメッセージ パッシング関数は、さまざまなメッセージ ブロックの型と共に使用されます。 同時実行ランタイムによって定義されるメッセージ ブロックの型の詳細については、「非同期メッセージ ブロック」を参照してください。

セクション

このトピックでは、次のメッセージ パッシング関数について説明します。

send と asend

concurrency::send 関数は、指定されたターゲットにメッセージを同期的に送信します。concurrency::asend 関数は、指定されたターゲットにメッセージを非同期的に送信します。 send 関数と asend 関数はどちらも、ターゲットが最終的にメッセージを受け入れるか拒否することを示すまで待機します。

send 関数は、ターゲットがメッセージを受け入れるか拒否するまで待機してから制御を戻します。 send 関数は、メッセージが配信された場合は true を返し、それ以外の場合は false を返します。 send 関数は同期的に動作するため、send 関数はターゲットがメッセージを受信するまで待機してから制御を戻します。

これに対して、asend 関数は、ターゲットがメッセージを受け入れるか拒否するまで待機せずに制御を戻します。 代わりに、asend 関数は、ターゲットがメッセージを受け入れ、最終的にそれを受け取る場合に true を返します。 それ以外の場合、asendfalse を返して、ターゲットがメッセージを拒否したか、またはメッセージを受け取るかどうかの決定を延期したことを示します。

[トップ]

receive と try_receive

concurrency::receive 関数と concurrency::try_receive 関数は、指定されたソースからデータを読み取ります。 receive 関数はデータが使用可能になるまで待機しますが、try_receive 関数はすぐに制御を戻します。

続行するためにデータが必要な場合は、receive 関数を使用します。 現在のコンテキストをブロックしてはいけない場合や、続行するためにデータを用意する必要がない場合は、try_receive 関数を使用します。

[トップ]

sendasendreceive の各関数の使用例については、次のトピックを参照してください。

[トップ]

関連項目

非同期エージェント ライブラリ
非同期メッセージ ブロック
send 関数
asend 関数
receive 関数
try_receive関数