receive 函数
一般接收实现,允许上下文仅等待来自一个源的数据并筛选所接受的值。
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。 如果要使零长度超时,应使用 try_receive 函数而不是使用 0(零)超时来调用 receive,因为它更有效且不会在超时的时候引发异常。
有关更多信息,请参见 消息传递函数。
要求
**标头:**agents.h
命名空间: 并发