Erlang A「;“暂时通行证”;模块

Erlang A「;“暂时通行证”;模块,erlang,Erlang,我试图创建一个通用模块,以不规则的间隔收集数据。新数据一到达,数据就从左端到达。这可能是每秒100次左右 在右端,我希望能够“插入”n个侦听器,每个侦听器都有自己的固定间隔。为了简化起见,让我们以每秒一次的间隔来表示所有 每个侦听器都注册一个回调函数,该函数可能是异步的,也可能不是异步的 我的问题是,如果回调函数是同步的,我的“临时传递”可能会挂起。最好的方法是什么?如果回调挂起,我是否应该生成一个纯粹目的是传递数据并付出代价的进程 +-------------+ Data O

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

在右端,我希望能够“插入”n个侦听器,每个侦听器都有自己的固定间隔。为了简化起见,让我们以每秒一次的间隔来表示所有

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

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

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

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


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

是的,这也是我的直觉。谢谢