gpt4 book ai didi

erlang - "Temporal Pass"模块

转载 作者:行者123 更新时间:2023-12-02 06:29:42 25 4
gpt4 key购买 nike

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

在右端,我希望能够“插入”n 个监听器,每个监听器都有自己的常规间隔。为了简单起见,我们假设所有的间隔都是每秒一次。

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

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

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

最佳答案

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

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

关于erlang - "Temporal Pass"模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11335352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com