receive 関数
receive の一般的な実装です。これにより、コンテキストで 1 つのソースからのデータを待機し、受け取った値をフィルター処理できます。
template <
class _Type
>
_Type receive(
_Inout_ ISource<_Type> * _Src,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);
template <
class _Type
>
_Type receive(
_Inout_ 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
名前空間: の同時実行