在这种情况下,假设我想等待一个可能在任何随机时间发生的条件发生。
while True:
if condition:
#Do Whatever
else:
pass
正如您所看到的,直到条件为 True 时才会发生 pass。但是,虽然条件不成立,但 cpu 与 pass 挂钩,导致更高的 cpu 使用率,而我只是想让它等待条件发生。我该怎么做?
See Busy_loop#Busy-waiting_alternatives:
大多数操作系统和线程库提供了各种系统调用,这些调用将在某个事件上阻塞进程,例如锁获取、计时器更改、I/O 可用性或信号。
基本上,要等待某件事,你有两种选择(与 IRL 相同):
- 以合理的时间间隔定期检查(这称为“轮询”)
- 让您正在等待的事件通知您:以某种方式调用(或者,作为特殊情况,解除阻止)您的代码(这称为“事件处理”或“通知”。对于阻止的系统调用,“阻止调用”或“通常使用“同步调用”或特定于调用的术语)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)