【发布时间】:2017-08-17 16:23:00
【问题描述】:
我有一个套接字服务器监听传入数据的连接并在输入暂停期间写入传出数据。由于这是一个循环,因此我正在调用sleep 以允许其他进程有一些 CPU 时间,而我的进程并不期待立即输入。
我知道sleep 会这样做,但usleep 是否也将执行返回给操作系统?我很怀疑,因为我知道,传统上,sleep 系统调用只接受几秒钟,而我十年前读过的一本关于 C 编程的非常古老的书说,要“休眠”较短的时间间隔涉及像制作无限循环这样的黑客攻击本质上是模拟sleep 调用,但不会将 CPU 时间让给其他进程。 (这本书可能错了,也可能不再准确,我只是告诉你它所说的。)
我使用的是 Linux,PHP 版本 5.6 和 7.1
谢谢
【问题讨论】:
-
我怀疑是操作系统级别的。 man7.org/linux/man-pages/man3/usleep.3.html
-
你可以测试一下。使用
usleep(10000)并观察你的 CPU 负载。 -
您可以使用
select或poll等待输入到达。您的程序将响应更快并使用更少的 CPU。