我基本上想要完成的是在 task_group 上安排新的工作项,因为工作变得可用。在 task_group 上,run() 方法在生产者消费者场景中被调用 - 这样在任何需要工作的特定时刻,它都被安排在 task_group 上运行
Concurrency::task_group taskGroup;
tempalte <typename Functor>
void queue_work(Functor& fn)
{
taskGroup.run([&fn](){
fn();
});
}
task_group 需要(在退出应用程序之前)调用 wait() 方法来释放资源。我使用 task_group 是因为我还需要取消支持,但需要调用 wait() 使设计复杂化。实际上,我似乎需要使用一个额外的线程来不时在任务组上调用 wait() (不知道在调用 wait() 一次之后在 task_group 上安排新工作是否合法或重复等待())。
你会如何使用微软的 ppl 来做到这一点?
编辑 MSDN 文档指出多次调用 wait() 是合法的:http: //msdn.microsoft.com/en-us/library/dd470481.aspx “在 task_group 对象上调用 wait 会将其重置为可以执行的干净状态被重用。这包括 task_group 对象被取消的情况。
唯一剩下的就是如果可以采取另一种方法