我需要创建一个并发软件,可以创建多个任务,并且每个任务都可以生成另一个任务(也可以生成另一个任务,以此类推)。
我需要在调用启动任务的方法之前进行阻塞:在所有任务和子任务完成之前不返回。
我知道有这个TaskCreationOptions.AttachedToParent属性,但我认为它不适合:
服务器将至少有8个核心,每个任务将创建2-3个子任务,因此如果我设置AttachedToParent选项,我有一种印象,即第二个子任务将不会在第一个子任务的三个任务结束之前启动。因此,我在此处会有限制的多任务处理。
因此,对于这个进程树:
我有一种印象,如果我每次启动线程时都设置AttachedToParent属性,则B将在E、F、G完成之前不会结束,因此C将在B完成之前开始,我只能使用3个活动线程而不是可以使用的8个线程。
如果我不设置AttachedToParent属性,则A将非常快地完成并返回。
那么如果我不设置此选项,如何确保始终使用我的8个核心?
我需要在调用启动任务的方法之前进行阻塞:在所有任务和子任务完成之前不返回。
我知道有这个TaskCreationOptions.AttachedToParent属性,但我认为它不适合:
服务器将至少有8个核心,每个任务将创建2-3个子任务,因此如果我设置AttachedToParent选项,我有一种印象,即第二个子任务将不会在第一个子任务的三个任务结束之前启动。因此,我在此处会有限制的多任务处理。
因此,对于这个进程树:
我有一种印象,如果我每次启动线程时都设置AttachedToParent属性,则B将在E、F、G完成之前不会结束,因此C将在B完成之前开始,我只能使用3个活动线程而不是可以使用的8个线程。
如果我不设置AttachedToParent属性,则A将非常快地完成并返回。
那么如果我不设置此选项,如何确保始终使用我的8个核心?