【发布时间】:2012-07-05 18:12:13
【问题描述】:
我将不得不创建一个并发软件来创建多个任务,每个任务都可以生成另一个任务(也可以生成另一个任务,...)。
我需要调用启动任务被阻塞的方法:在所有任务和子任务完成之前不返回。
我知道有这个TaskCreationOptions.AttachedToParent 属性,但我认为它不适合:
服务器至少有8个核心,每个任务会创建2-3个子任务,所以如果我设置AttachedToParent选项,我的印象是第二个子任务不会在第一个子任务的三个任务结束。所以我将在这里进行有限的多任务处理。
所以有了这个进程树:
我的印象是,如果我在每次启动线程时设置 AttachedToParent 属性,B 不会在 E、F、G 完成之前结束,所以 C 将在 B 完成之前开始,而我将只有 3 个活动线程我可以拥有的 8 个。
如果我不放 AttachedToParent 属性,A 会很快完成并返回。
那么,如果我不设置此选项,我该如何确保我的 8 个内核始终得到充分利用?
【问题讨论】:
-
不要依赖展示次数。要么在文档中查找它,要么自己尝试一下。
标签: c# .net parallel-processing task-parallel-library thread-synchronization