次の方法で共有


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

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

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

セクション

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

  • send および asend

  • receive および try_receive

send および asend

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

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

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

Top

receive および try_receive

Concurrency::receiveconcurrency::try_receive 関数は、特定のソースからデータを読み取る。receive 関数はデータが使用できるようになるのを待ちますが、try_receive 関数は即座に制御を返します。

receive 関数は、データの処理を継続する必要がある場合に使用します。try_receive 関数は、現在のコンテキストをブロックしてはならないか、データの処理を継続する必要がない場合に使用します。

Top

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

Top

参照

関連項目

send 関数

asend 関数

receive 関数

try_receive 関数

概念

非同期エージェント ライブラリ

非同期メッセージ ブロック