GlobalTimer性能问题

黑老怪

因为看到使用workerman自带的定时器,如果数量多的时候会发生计时不准确的情况,如果使用GlobalTimer会出现那种情况吗,如果会出现又应该怎么去解决呢?
 
应用场景:棋牌游戏出牌倒计时

阅读 1470
1个回答

walkor

时间不准是因为单个进程内部处理业务都是串行的,处理完一个才处理下一个,如果处理时间超过了下次运行定时器的时间,会造成不准确。GlobalTimer也无法避免业务执行慢导致下一个定时器执行时间不准问题。
如果进程里的业务都能在预期时间内完成,则不存在定时器不准的情况。
 
如果担心定时器执行时间被业务影响,可以单独启动一个进程专门运行定时器,这样这个进程里的定时器是准的,时间到后利用channel组件通知其它进程该运行业务。

  • 黑老怪 2018-12-21

    感谢解答,了解了问题所在。