定时器会阻塞吗?

workerman_udp

业务每次请求都会调用一次定时器,如果下次请求来的时候上次定时器还没有处理完会发生什么?
  
在手册里看的:
2、添加的定时任务在当前进程执行(不会启动新的进程或者线程),如果任务很重(特别是涉及到网络IO的任务),可能会导致该进程阻塞,暂时无法处理其它业务。所以最好将耗时的任务放到单独的进程运行,例如建立一个/多个Worker进程运行

5552 1 0
1个回答

walkor

这个看情况。
如果是长连接应用,定时器里的业务代码发生阻塞的时候,这个进程维持的长连接有新的请求发过来,这个请求会排队等待定时器执行完毕后才会被处理。
如果是短连接应用,定时器里的业务代码发生阻塞,这时候有新的连接发起请求,当前进程不会去接受这个新的连接,其它空闲的连接会去接受这个新连接。如果所有进程都发生定时器阻塞,那么哪个进程先执行完定时器并且进入空闲状态哪个进程先去接受这个新连接,然后处理连接上发来的请求。

  • 暂无评论
年代过于久远,无法发表回答
🔝