gpt4 book ai didi

c# - 如何在不使用 TaskCreationOptions.AttachedToParent 的情况下等待所有任务(创建的任务和子任务)

转载 作者:太空狗 更新时间:2023-10-29 23:16:43 28 4
gpt4 key购买 nike

我将不得不创建一个创建多个任务的并发软件,每个任务都可以生成另一个任务(也可以生成另一个任务,...)。

我需要调用启动任务阻塞的方法:在所有任务和子任务完成之前不返回。

我知道有这个 TaskCreationOptions.AttachedToParent 属性,但我认为它不适合:

服务器至少会有 8 个核心,每个任务会创建 2-3 个子任务,所以如果我设置 AttachedToParent 选项,我的印象是第二个子任务在第一个子任务的三个任务结束之前不会开始。所以我将在这里进行有限的多任务处理。

所以有了这个流程树:

enter image description here

我的印象是,如果我每次启动线程时都设置 AttachedToParent 属性,则 B 不会在 E、F、G 完成之前结束,因此 C 将在 B 完成之前开始,而我将只有 3 个事件线程我可以拥有 8 个中的一个。

如果我不设置 AttachedToParent 属性,A 将很快完成并返回。

那么,如果我不设置此选项,我该如何确保我的 8 个核心始终得到充分利用?

最佳答案

TaskCreationOptions.AttachedToParent 不会阻止其他子任务启动,而是会阻止父任务本身关闭。因此,当 E、F 和 G 以 AttachedToParent 启动时,B 不会被标记为已完成,直到所有三个都完成。所以它应该如您所愿。

source (在接受的答案中)。

关于c# - 如何在不使用 TaskCreationOptions.AttachedToParent 的情况下等待所有任务(创建的任务和子任务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342652/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com