相关疑难解决方法(0)

IEnumerable Linq方法是线程安全的吗?

我想知道Linq扩展方法是否是原子的?或者,在进行任何迭代之前,我是否需要跨线程使用的lock任何IEnumerable对象?

声明变量volatile对此有何影响?

总结一下,以下哪项是最好的,线程安全,操作?

1-没有任何锁:

IEnumerable<T> _objs = //...
var foo = _objs.FirstOrDefault(t => // some condition
Run Code Online (Sandbox Code Playgroud)

2-包括锁定语句:

IEnumerable<T> _objs = //...
lock(_objs)
{
    var foo = _objs.FirstOrDefault(t => // some condition
}
Run Code Online (Sandbox Code Playgroud)

3-将变量声明为volatile:

volatile IEnumerable<T> _objs = //...
var foo = _objs.FirstOrDefault(t => // some condition
Run Code Online (Sandbox Code Playgroud)

c# multithreading atomic thread-safety

20
推荐指数
2
解决办法
1万
查看次数

标签 统计

atomic ×1

c# ×1

multithreading ×1

thread-safety ×1