C语言 函数 sleep() 在被动时是否处于活动状态



C 中的函数 sleep() 是主动等待还是被动等待?

由于它停止线程运行,它是否总是检查时间是否已经过去了,如下所示:

while(1){
//need to wake?
}

或被动的喜欢:

alarm(sec);
pause(); // wait for the alarm and sleeping?

该系统是 unix。

sleep不是

标准的C库函数。

如果您的平台拥有它,它几乎肯定会调用操作系统来挂起线程(即,在您的表示法中,被动)。

它不会采用while(1){}类型的成语,因为这会不必要地烧毁 CPU。

有两种通用的方法来实现 sleep() 函数。

一种是使用 alarm() 函数调度 SIGALRM 信号,然后挂起等待该信号的调用线程。二是实施独立设施。

函数 sleep() 在 unix 中处于被动等待状态。

sleep()是一个标准的POSIX函数:

sleep()函数将导致调用线程挂起 从执行到指定的实时秒数 通过参数,秒数已过去或信号被传递到 调用线程及其操作是调用信号捕获函数 或终止进程。暂停时间可能长于 由于系统安排了其他活动而请求。

相关内容

最新更新