sleep函数的简单原理

  我们平时使用sleep(s)的时候,当前线程会休眠一段时间。这个休眠跟我们平时使用的while,for等循环语句不同,因为使用循环的时候cpu还是被这个线程占用着。

到网上查了下原理,大概是这样来实现的。

void sleep(unsignedint s){
    //void (*signal(int signum,void(* handler)(int)))(int);
    //设置信号SIGALRM,如果内核发出这个信号,则调用wakeup函数
    signal(SIGALRM, wakeup);
    //alarm(unsignedint s)是一个定时器函数,通知内核10s后发出SIGALRM信号
    alarm(10);
}
void wakeup(){
    printf("Alarm wakeup\n");
}
原文地址:https://www.cnblogs.com/charlexu/p/2908780.html