swoole不能用sleep的原因是什么(sleep,swoole,编程语言)

时间:2024-05-03 16:19:42 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    swoole%E4%B8%8D%E8%83%BD%E7%94%A8sleep%E7%9A%84%E5%8E%9F%E5%9B%A0%E6%98%AF%E4%BB%80%E4%B9%88

因为在swoole中,使用sleep函数会使进程陷入睡眠阻塞;sleep过程中只有信号可以打断,由于swoole的信号是基于signalfd实现的,所以即使发送信号也无法中断sleep,只有到指定的时间后操作系统才会重新唤醒当前的进程。

本教程操作环境:Windows10系统、Swoole4版、DELL G3电脑

在异步IO的程序中,不得使用sleep/usleep/time_sleep_until/time_nanosleep。(下文中使用sleep泛指所有睡眠函数)

sleep函数会使进程陷入睡眠阻塞

直到指定的时间后操作系统才会重新唤醒当前的进程

sleep过程中,只有信号可以打断

由于Swoole的信号处理是基于signalfd实现的,所以即使发送信号也无法中断sleep

Swoole提供的swoole_event_add、swoole_timer_tick、swoole_timer_after、swoole_process::signal、异步swoole_client 在进程sleep后会停止工作。swoole_server也无法再处理新的请求。

实例程序

onReceive事件中执行了sleep函数,server在100秒内无法再收到任何客户端请求。

本文:swoole不能用sleep的原因是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Android中如何应用本地应用程序下一篇:

18 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18