3

我正在尝试创建一个以不规则间隔收集数据的通用模块。一旦新数据到达,数据就会从左端到达。这可能是每秒 100 次。

在右端,我希望能够“插入”n 个侦听器,每个侦听器都有自己的固定间隔。为简化起见,假设所有时间间隔为每秒一次。

每个侦听器都会注册一个可能是异步的也可能不是异步的回调函数。

我的问题是,如果回调函数是同步的,我的“临时通道”可能会挂起。解决这个问题的最佳方法是什么?如果回调挂起,我是否应该生成一个纯粹目的是传递数据并付出代价的进程?

         +-------------+ Data Out 1
=======> |Temporal Pass| ==========>
Data In  +-------------+ \\ Data Out 2
                          ++=======>
                           \\ Data Out n
                            ++=======>
4

1 回答 1

4

为消息生成一个新进程,否则该进程将等待同步调用完成。这正是流程模型要解决的问题,我看不出有任何其他方法可以解决。

产卵过程并不昂贵,但也不是完全免费的。通过只为同步调用生成新进程,您可能会获得小的性能提升。这将需要某种方式将每个回调标记为同步或异步。

于 2012-07-04T21:41:29.580 回答