重启C ++并发代理?

时间:2013-12-17 07:11:45

标签: c++ concurrency

我可以在完成工作后重新启动Concurrency Agent对象吗?

1 个答案:

答案 0 :(得分:2)

简短回答是否。

如果查看生命周期described here,您会看到以下内容:

  

代理商拥有固定的生命周期。 concurrency::agent_status   枚举定义代理的各种状态。下列   插图是一个状态图,显示了代理如何从中发展   一个州到另一个州。在此图中,实线表示   您从应用程序调用的方法;虚线代表   从运行时调用的方法。

image

这清楚地表明,一旦您的座席进入donecancelled状态,就无法回头。

另外,如果查看agent::start文档,您会看到:

  

将代理从 agent_created 状态移至 agent_runnable 状态,并将其安排执行。

和此:

  

已取消的座席无法启动。

虽然这没有提及完成状态,但我从经验中发现,一旦完成,它就完成了。状态序列图显示了所有路径的单向行程。