PLINQ枚举冻结 [英] PLINQ Enumeration Freezes

查看:80
本文介绍了PLINQ枚举冻结的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在并行枚举可转换为可枚举的可观察对象时遇到了一个非常不寻常的问题.由于某种原因,枚举 在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆