Fat*_*mon 25 c operating-system sleep
我只是对如何sleep(time in ms)在C库中实现或基本上在操作系统级别实现...
我猜...
有线索吗?可能C库的源代码可以解释一下吗?我并不太关注"C"是如何实现的......我只是想知道"sleep()"函数是如何实现的.
Mic*_*urr 21
Sleep()在操作系统级别实施.当任务/线程/进程正在休眠时,处理器不会旋转.该特定线程被置于挂起队列(线程尚未准备好运行),直到时间到期为止,此时线程将被置于准备运行队列中.
与此同时,将运行准备运行的其他线程.
只有当没有准备好运行的线程时,操作系统才会进入空闲线程,这通常会发出指令以关闭(或无论如何都处于低功耗状态)处理器,直到发生硬件中断.
仅对于一个非常简单的系统(如最简单的嵌入式系统),Sleep() 实际上可能实现为繁忙的等待循环.
任何操作系统教科书,例如Tanenbaum的"现代操作系统"都将非常详细地介绍它 - 几乎任何一本(甚至是旧的,便宜的,用过的).