PLINQ枚举冻结 [英] PLINQ Enumeration Freezes
问题描述
我在并行枚举可转换为可枚举的可观察对象时遇到了一个非常不寻常的问题.由于某种原因,枚举 在8次通过后冻结,但是,如果我不并行执行,则枚举可以很好地工作而不会冻结.
I am experiencing a very unusual issue while enumerating in parallel an observable that has been converted into an enumerable. For some reason the enumeration freezes after 8 passes, however if I don't do it in parallel the enumeration works just fine without freezing.
任何想法都将受到高度赞赏.
Any ideas would be highly appreciated.
这是我的示例代码:
class程序
{
静态void Main(string [] args)
{
IObserver< long> o = null;
var subject = new BehaviorSubject< long>(0L);
主题
.ToEnumerable()
.AsParallel()
.WithDegreeOfParallelism(1)
.ForAll
(
i =>
{
Debug.WriteLine($" {i}"));
subject.OnNext(i + 1L);
}
);
}
}
class Program
{
static void Main(string[] args)
{
IObserver<long> o = null;
var subject = new BehaviorSubject<long>(0L);
subject
.ToEnumerable()
.AsParallel()
.WithDegreeOfParallelism(1)
.ForAll
(
i =>
{
Debug.WriteLine($"{i}");
subject.OnNext(i+1L);
}
);
}
}
推荐答案
注释时是否挂起OnNext 行?也许不是线程安全的.
Does it hang when you comment OnNext line? Maybe it is not thread-safe.
这篇关于PLINQ枚举冻结的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!