Back to Blog

Linux sleep函数作用

#linux#float

sleep把进程的运行状态改为睡眠,将其从 系统 可执行队列去掉,这样系统就不会调度到该进程,不会分配CPU时间片。同时根据该进程的睡眠时间,将进程挂入相应的定时器 队列 中。

同时内核维持一个定时器队列,每一次 时钟 中断处理,都把当前到期的队列中的进程唤醒,加入到可运行进程队列中。 同时对所有挂入定时器队列中的进程时间值减1,

    clock_t start=clock();    sleep(5);    clock_t end=clock();    float time=(float)(end-start)/CLOCKS_PER_SEC;    printf("Sleep clock:%f\n",time);

首先獲取當前系統滴答數A,然後再加上需要sleep的時長結合CPU時鐘頻率計算得到的滴答數B。再來一個while循環,循環體中不停獲取當前滴答數,大於(A+B)時跳出循環,函數返回。