【发布时间】:2012-05-04 22:10:54
【问题描述】:
任务并行库的委托的内部线程是否安全 - 即在该委托中声明的变量的值是否与该线程隔离?
例子:
Parallel.ForEach(collection, item => {
var something = new Something(item.Property);
});
something 是否保证对于线程始终是唯一的,防止被同一 Parallel 操作创建的另一个线程覆盖?
【问题讨论】:
-
如下所述,这个例子是线程安全的。但在使用 TPL 时,情况并非总是/自动发生。确保任务是独立的或线程安全的仍然是程序员的主要责任。没有编译器警告,没有工具。
标签: c# .net multithreading thread-safety task-parallel-library