回调和协程:利用同步思路处理异步响应的本质

本文探讨了编程领域的同步和异步概念,解释了操作系统如何通过进程和线程提供异步抽象。同步代码效率低的原因在于API颗粒度小,导致频繁的阻塞操作。通过回调函数和异步操作API,可以实现同步思路处理异步响应,但回调函数可能导致思维复杂性增加。协程作为一种用户态线程,通过状态机封装回调,提供更简洁的异步编程体验。协程并非独立执行实体,通常依赖于操作系统线程,如Go语言中的实现则采用N:M模型。
摘要由CSDN通过智能技术生成

编程领域的同步和异步

  1. 同步:指一个执行序1在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个执行序将会一直等待下去,直到收到返回信息才继续执行下去;
  2. 异步:指执行序不需要一直等下去,而是继续执行下面的操作,不管其他执行序的状态。当有消息返回时系统会通知指定执行序进行处理。这样在等待操作完成的过渡事件,系统可以有效利用cpu的资源。

从以上定义可以看出同步和异步之间的区别在于主动权的所属,基本上可以理解为:

  • 同步操作主动权在发起者,操作者需要检索指定条件是否满足,如果满足则继续执行,否则继续等待。
  • 异步操作主动权切换,操作者发起异步操作之后,主动权归还系统,当系统满足条件之后,系统会继续调用接下来的处理步骤。

从本质上来看,同步的思维更加接近人的惯性思维,更加容易编写成熟稳定的代码,异步代码更符合CPU硬件运行,更加容易编写高效运行代码。

两者看似是一对相互对立的概念,然而在现代编程领域,除了裸写嵌入式程序,一般情况下,同步和异步操作的区别不再明显,更何况有不少编程手段立意用同步的编程方式编写异步任务处理。

同步和异步是两个相依相对的概念,从表现上来看࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值