问题:
IEnumerable<Signal> feed = GetFeed();
var average1 = feed.MovingAverage(10);
var average2 = feed.MovingAverage(20);
var zipped = average1.Zip(average2, (x,y) => Tuple.Create(x,y));
当我遍历“zipped”时,GetFeed()。GetEnumerator()被调用两次并产生各种同步问题。是否有LINQ运算符可用于从单个生产者向多个消费者广播值?我知道Memoize,但在我的情况下,我无法预测缓冲区大小,以保持缓慢和快速的消费者“快乐”。
我正在考虑编写自己的运算符,为每个使用者保留单独的队列,但是想检查是否存在现有的解决方案。
答案 0 :(得分:3)
你想要的是Reactive Extensions。这就像LINQ to Objects,但反过来说:你没有拉值,他们通过观察者推送。
习惯它需要一点时间,但根据你发布的内容来判断,它是适合你的模型。