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/archive/2013/02/07/2908780.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
async/await 是用于处理异步操作的关键字,它们的原理如下: 1. async:async 关键字用于定义一个异步函数。异步函数可以包含 await 表达式,而且只有在异步函数中才能使用 await。 2. await:await 关键字用于等待一个异步操作的完成,并返回其结果。在遇到 await 表达式时,异步函数会暂停执行,直到异步操作完成并返回结果后,才会继续执行后面的代码。 async/await 的原理可以简单概括为以下几个步骤: 1. 当调用一个异步函数时,该函数会立即返回一个 Promise 对象。 2. 异步函数内部的代码会按照顺序执行,遇到 await 表达式时,会暂停执行,并将 await 后面的表达式转化为一个 Promise 对象。 3. 当 await 后面的 Promise 对象状态变为 resolved(已完成)时,await 表达式会返回 Promise 对象的结果,并继续执行后面的代码。 4. 如果 await 后面的 Promise 对象状态变为 rejected(已拒绝),则会抛出一个异常,可以使用 try/catch 块来捕获并处理异常。 5. 异步函数的返回值也是一个 Promise 对象,可以使用 then() 方法或 async/await 来获取异步函数的结果。 以下是一个示例代码,演示了 async/await 的原理: ```python import asyncio async def async_function(): print("Start") await asyncio.sleep(1) # 模拟一个异步操作,等待1秒 print("End") return "Result" async def main(): result = await async_function() print(result) asyncio.run(main()) ``` 输出结果为: ``` Start End Result ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值