0

我一直在尝试优雅地处理异步工作线程既产生结果又(可能)识别更多需要完成的工作的情况。换个角度想,如果您正在遍历一棵树并在每个节点上工作,那么工作人员正在处理树中间的一个节点,并且发现了需要自己工作的子节点。

工作线程向作业队列添加更多作业是否合理设计?这将要求工作人员对它所属的并发系统有所了解,这对我来说似乎违反了一些不成文的规则。这个问题是如何解决的?

4

1 回答 1

1

工作线程向作业队列添加更多作业是否合理设计?

我之前肯定写过这样的代码,工作任务可以访问任务队列并可以向其中添加其他任务。但话虽如此,我从设计的角度理解你的沉默。

这个问题是如何解决的?

一种替代方法是让任务的结果包含要添加到列表中的附加任务的集合。因此,当正在获取已完成任务的线程查看结果时,它会在此时将任何其他任务添加到工作队列中。

这确实意味着收割者需要实时处理结果以获得最佳并发性。

于 2013-06-03T16:42:38.007 回答