【发布时间】:2020-04-02 07:02:25
【问题描述】:
是否保证在任务延续中可见副作用?
object o = null;
Task.Run (() => o = new object ())
.ContinueWith (t => o.ToString ());
延续可能在与第一个任务不同的线程上运行。如果没有任何类型的内存栅栏,则对o 的分配可能对延续不可见。在这种情况下,会抛出 NullReferenceException。上面的例子中是否有什么已经阻止了这种情况?
【问题讨论】:
-
我不认为有任何正式记录,但如果不能保证您看到任务的效果,那么继续将毫无用处。
-
@Damien_The_Unbeliever 我猜延续通常会直接使用任务结果,所以他们不会受到这个问题的困扰。
标签: .net task side-effects