Not*_* ID 4 erlang timer match
我有一个gen_server进程维护一个池,对于每个传入的请求,我需要检查池以查看该传入请求是否匹配,如果有,匹配的一个从池中删除并且回复是两个要求; 如果没有,则将新请求放入池中以供以后检查.
商业逻辑要求,如果一个请求,R在T没有匹配的情况下在池中停留几秒钟,我需要回复R说"我找不到你的匹配".
理想情况下,我想用定时器执行此操作,特别是对于每个传入请求,如果没有匹配,请像以前一样将它放到池中,但也启动一个计时器,告诉gen_server如果时间到了就删除它,当然,如果以后匹配,应取消计时器.
我担心的是,如果池中有很多不匹配的请求,那么会有很多运行的计时器,这个(太多的计时器)会成为一个问题吗?
R18中的定时器实现有了很大的改进.
Run Code Online (Sandbox Code Playgroud)Besides the API changes and time warp modes a lot of scalability and performance improvements regarding time management has been made internally in the runtime system. Examples of such improvements are scheduler specific timer wheels, scheduler specific BIF timer management, parallel retrieval of monotonic time and system time on systems with primitives that are not buggy.
调度程序特定的计时器轮正是您的方案中有趣的.我怀疑你会在Erlang或任何其他语言/环境中找到更好的解决方案.因此,当您使用R18或更新版本时,您的解决方案应该没问题.