.net 嵌套任务和单独任务之间的区别
我试图理解TPL中嵌套任务的概念。在什么情况下,最好创建嵌套任务,而不是创建两个单独的任务,因为在嵌套任务的情况下,它完全独立于父任务 使用父任务的本地队列是否会提高性能?这是有关此任务的msdn 首先,“嵌套任务”只是指在另一个任务中启动一个新任务,如下所示:.net 嵌套任务和单独任务之间的区别,.net,.net-4.0,task-parallel-library,.net,.net 4.0,Task Parallel Library,我试图理解TPL中嵌套任务的概念。在什么情况下,最好创建嵌套任务,而不是创建两个单独的任务,因为在嵌套任务的情况下,它完全独立于父任务 使用父任务的本地队列是否会提高性能?这是有关此任务的msdn 首先,“嵌套任务”只是指在另一个任务中启动一个新任务,如下所示: var outerTask = Task.Factory.StartNew( () => { var nestedTask = Task.Factory.StartNew( () => {
var outerTask = Task.Factory.StartNew( () =>
{
var nestedTask = Task.Factory.StartNew( () =>
{
Console.WriteLine("Inside nestedTask");
});
});
您可能的意思是“嵌套任务”和“子任务”之间的区别
“子任务”如下所示:
var parentTask = Task.Factory.StartNew( () =>
{
var childTask = Task.Factory.StartNew( () =>
{
Console.WriteLine("Inside childTask");
}, TaskCreationOptions.AttachedToParent );
});
子任务将强制与父任务进行某些同步
由于子任务总是比独立嵌套任务具有更高的同步开销,因此您可能想知道为什么要使用它们
有时,您希望确保这些任务的同步。您希望子任务在父任务完成之前计算一些内容。其他时候,它可能只是使调试更容易,因为您将不得不处理更少的非确定性
减少非确定性,可能会帮助您更快地编写和测试代码
虽然我不确定它是以这种方式实现的,但是子任务可以被注入到与父任务相同的线程/核心上,特别是当父任务只是在等待子任务时。在这种情况下,您可能能够从子任务中的父任务获得缓存的附加好处
(这似乎是一个好主意,但我认为它还没有以这种方式实现,如果我错了,请纠正我)。对不起,你完全错了。我想知道创建嵌套任务的必要性,以及我们可以从中获得什么好处,而不是创建新任务…@RaoBHavik我的回答的后半部分描述了您使用它进行同步,并更容易地解释程序,但同步会导致相关的速度减慢。据我所知,没有其他区别。你能描述一下你所说的“嵌套任务”到底是什么意思吗。嵌套任务只是在另一个任务的用户委托中创建的System.Threading.Tasks.task实例。子任务是使用AttachedToParent选项创建的嵌套任务。我想了解嵌套任务的用途,以及它如何有用,或者何时应该使用它。。。。