RX.net主题线程对用户安全吗?

3qpi33ja  于 12个月前  发布在  .NET
关注(0)|答案(2)|浏览(72)

我很难找到信息,因为谷歌产生了关于并发推送数据到主题的安全性的结果,这不是我的用例,我有一个专用的线程(运行无限循环)生成数据,我希望其他N个线程能够订阅它。
1.如果我只从一个线程(也恰好是创建示例的线程)向一个Subject中推送数据,那么从另一个线程调用Subject上的非生产方法(subsribe/observe等,但不是On*)方法是否安全?
1.如果是安全的:它在任何时候都是安全的吗(我可以从另一个线程订阅,而主线程在调用OnNext的过程中),或者只有当我调用Subscribe时没有数据生成时才是安全的?
1.与#2相同的问题,但关于多个观察者同时调用Subscribe来注册,如果我有十几个线程需要注册,这也安全吗?

ct2axkht

ct2axkht1#

这些方法是线程安全的。我不认为有明确的文档来说明这一点,但最令人信服的(如果不容易消化的话)证据是源代码本身。
在这里看看Subscribe的实现,可以看到大量使用线程安全技术的证据,比如在更新观察器时使用Interlocked
为了避免误导任何偶然的读者,我重申你的观察,OnNext等。方法在设计上是 * 非 * 线程安全的,如果你真的需要它们,使用Synchronize方法可以有所帮助。

2guxujil

2guxujil2#

正如@Enigmativity在评论中证实的那样,订阅是线程安全的。
如果有人提供更详细/官方的消息来源,将接受任何答案,而不是这个答案。

相关问题