multithreading - 响应式(Reactive)扩展 OnNext 线程安全

标签 multithreading c#-4.0 thread-safety system.reactive

与 Rx Subject , 调用 OnNext() 是线程安全的吗?从多个线程?

所以序列可以从多个来源生成。

合并会做同样的事情吗?

最佳答案

Rx 合约要求通知是顺序的,并且对于多个运营商来说是逻辑上的必要。也就是说,您可以使用可用的 Synchronize获得这种行为的方法。

var subject = new Subject<int>();
var syncedSubject = Subject.Synchronize(subject);            
您现在可以同时调用 syncedSubject .
对于必须同步的观察者,您还可以使用:
var observer = Observer.Create<Unit>(...);
var syncedObserver = Observer.Synchronize(observer);
测试:
Func<int, Action> onNext = i => () => syncedSubject.OnNext(i);
Parallel.Invoke
(
    onNext(1),
    onNext(2),
    onNext(3),
    onNext(4)
);

关于multithreading - 响应式(Reactive)扩展 OnNext 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270642/

相关文章:

c++ - Qt中正确的线程方式

powershell - Azure 计费数据 API

c# - 从具有整数属性的 List<T> 返回 List<int>?

asp.net - 如何在查询字符串中传递两个参数?

c++ - STL vector 并发读取线程安全吗?

java - 将上下文传递给多个线程是否安全?

objective-c - 从多个线程写入文件

java - ExecutorService 对单个线程的时间限制

java - 关机时线程自杀?停止 java.util.Timer 实例

swift - 如何从另一个线程提供图像?