相关疑难解决方法(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万
查看次数

确定IEnumerable <T>是否包含另一个IEnumberable <T>的任何对象

我有2个 IEnumerable<int>

IEnumerable<int> x;
IEnumerable<int> y;
Run Code Online (Sandbox Code Playgroud)

确定x中是否存在任何int的最佳方法是什么?
目前我正在使用:

return x.Intersect<int>(y).Count() > 0;
Run Code Online (Sandbox Code Playgroud)

是否可以明显更快地循环并单独测试每个?

foreach (int i in x)
{
    foreach (int j in y)
    {
        if (i == j) return true;
    }
}
return false;
Run Code Online (Sandbox Code Playgroud)

列表相对较轻,如果在考虑中重要,则x中不超过50个,y中不超过4个.

.net ienumerable

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

标签 统计

.net ×1

atomic ×1

c# ×1

ienumerable ×1

multithreading ×1

thread-safety ×1