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

命名空间: 并发

请参见

参考

concurrency 命名空间

try_receive 函数

send 函数

asend 函数