首页 > 解决方案 > 为什么C没有像javascript中的setTimeout这样的非阻塞睡眠功能

问题描述

sleep()x在 C 给定的秒数中阻塞正在运行的线程。如果我没记错的话,这可以通过两种方式实现。进入无限循环并使用 BIOS 检查当前时间,如果 time>=timeout 则结束循环。

第二种方法是在 CPU 中使用定时器,让定时器异步计数,而不阻塞 CPU 线程。

我对上述两种方法是否正确?如果是这样,为什么C没有植入第二种方式的功能,这样我们就可以有非阻塞的“延迟”?

标签: ctimerx86sleep

解决方案


还有另一种方法,通常是调用sleep(): 告诉内核调度程序从可运行集中删除这个进程,直到时间到期。

对于设置计时器并告诉您何时完成的功能,您可以从查看alarm()pause()开始。这些不在标准 C 库中,但它们在 Posix 中已经存在很长时间了。

在 Windows 上,您可以查看 SetTimer。


推荐阅读