receive 関数

receive の一般的な実装です。これにより、コンテキストで 1 つのソースからのデータを待機し、受け取った値をフィルター処理できます。

template <
   class _Type
>
_Type receive(
   ISource<_Type> * _Src,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);
template <
   class _Type
>
_Type receive(
   ISource<_Type> * _Src,
   typename ITarget<_Type>::filter_method const& _Filter_proc,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);
template <
   class _Type
>
_Type receive(
   ISource<_Type> &_Src,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);
template <
   class _Type
>
_Type receive(
   ISource<_Type> &_Src,
   typename ITarget<_Type>::filter_method const& _Filter_proc,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);

パラメーター

  • _Type
    ペイロードの種類。

  • _Src
    データを取得するソースへのポインターまたは参照。

  • _Timeout
    メソッドがデータを待機する最大時間 (ミリ秒単位)。

  • _Filter_proc
    メッセージを受け付けるかどうかを決定するフィルター関数。

戻り値

ペイロードの種類を示す、ソースの値。

解説

_Timeout パラメーターの値が COOPERATIVE_TIMEOUT_INFINITE 定数以外の場合、メッセージを受信する前に指定された時間が経過すると、operation_timed_out 例外がスローされます。 タイムアウトの長さを 0 にする場合は、タイムアウトに 0 (ゼロ) を指定して receive を呼び出す代わりに、try_receive 関数を使用してください。この関数はより効率的であり、タイムアウトの場合に例外をスローしません。

詳細については、「メッセージ パッシング関数」を参照してください。

必要条件

ヘッダー: agents.h

名前空間: Concurrency

参照

参照

Concurrency 名前空間

try_receive 関数

send 関数

asend 関数