【发布时间】:2013-09-23 18:40:29
【问题描述】:
我正在开发一个组件,它需要处理实时提要并以非常快的方式将数据广播给听众(精度约为 100 纳秒级,如果我能做到这一点,甚至会更低)目前我正在提出一个订阅者可以订阅的我的代码中的事件。但是,因为在 C# 事件处理程序中运行在引发事件的同一线程上,所以引发事件的我的线程将被阻塞,直到所有订阅者完成处理事件。我无法控制订阅者的代码,因此他们可能会在事件处理程序中执行任何耗时的操作,这可能会阻塞正在广播的线程。
我该怎么做才能将数据广播给其他订阅者,但仍能很快地广播内容??
【问题讨论】:
-
听起来你需要在它自己的线程中触发事件。
-
100ns 大约是 300 条指令。祝你以这样的速度获得跨线程同步。
-
我不明白您如何无法控制订阅者的代码。其他程序可以订阅事件吗?
-
@Blam 如果您正在编写将由各种不同类型的消费者导入的库代码,每个都添加带有任意代码的事件处理程序......
标签: c# .net multithreading events asynchronous