为每个孩子运行一个单独的任务

我有一个树数据结构,其中每个兄弟姐妹都可以并行处理。

目前我创建了一个单独的任务来处理每个孩子。这是天真吗,一旦树具有给定的大小/深度,它会损害性能吗?

还是 CLR 旨在处理任意负载的任务,因为它们没有绑定到特定的操作系统线程?!


Helenr
浏览 139回答 1
1回答

慕的地10843

这个问题的重要答案是肯定的。但是为了完全理解它,您必须更深入地研究任务,看看您的任务是长期运行的任务还是短期运行的任务。第二个链接包含您问题的答案,但为您总结一下:默认情况下,任务是短期运行的。这是什么意思:任务将在线程池中创建。如果您的任务将执行会消耗大量时间的工作,这意味着长时间运行- 您应该避免在线程池中创建任务,因为它会用越来越多的任务填充您的线程池并最终会溢出,让我们调用它,线程池。长时间运行意味着任务将在线程池之外的单个线程上创建,它可以使用TaskCreationOptions Enumeration定义:TaskCreationOptions.LongRunning
打开App,查看更多内容
随时随地看视频慕课网APP