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