我正在尝试创建一个以不规则间隔收集数据的通用模块。一旦新数据到达,数据就从左端到达。这可能是每秒100次。
在右端,我希望能够“插入”n个侦听器,每个侦听器都有自己的常规间隔。为了简化,我们假设所有的间隔都是每秒一次。
每个侦听器都注册一个可能是异步的回调函数。
我的问题是,如果回调函数是同步的,我的“临时通行证”可能会挂起。解决这个问题的最佳方法是什么?我应该生成一个进程,其纯粹的目的是传递数据并在回调挂起时支付价格吗?
+-------------+ Data Out 1
=======> |Temporal Pass| ==========>
Data In +-------------+ \\ Data Out 2
++=======>
\\ Data Out n
++=======>
答案 0 :(得分:4)
为消息生成一个新进程,否则进程将等到同步调用完成。这正是流程模型要解决的问题,我没有看到任何其他方法。
产卵过程并不昂贵,但也不完全免费。通过仅生成同步调用的新进程,您可以获得较小的性能提升。这将需要某种方式将每个回调标记为同步或异步。