阻塞与非阻塞 ,同步 与异步的区别

本文深入解析了同步与异步、阻塞与非阻塞的概念及其在编程中的应用。通过生动的比喻,如书店找书和烧水的例子,详细解释了这四种机制的区别,帮助读者理解不同场景下的消息通信机制和进程状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 同步 与异步

同步和异步关注的是消息通信机制,同步,就是发起一个调用后,在没有得到结果前,该调用不返回,一旦调用返回,就得到返回值,

就是调用者主动等待这个 调用的结果 ,

异步相反,调用发出后,就直接返回,没有返回结果 ,当一个异步过程调用发出后,调用者不会立刻得到结果 ,而是在调用发出后,由被调用者通过状态,通知来通知被调用者,或通过回调函数 处理这个 调用,典型的异步编程 模型如node js

比如你去书店找一本书 三国演义,你给书店老板说书名后,同步是书店老板找啊找,可能找一分钟,可能一天,他找到后,再把书给你,异步是,老板让你先回去,等找到后给你回电话,

 

阻塞和非阻塞  关注的是程序在等待调用结果时的状态,

阻塞 是指结果返回前,程序 会一直挂起, 走直到结果返回

非阻塞是结果 返回前,程序 的该线程会一直执行,

还是上面那个例子,阻塞是,报完书名后 ,,你一直在那儿等着,什么也不干,非阻塞是,报完书名后,你去干其他事,同时中间时不时去打电话问下书店老板

阻塞/非阻塞  进程/线程需要的数据是否就绪,进程 线程是否需要等待

同步 异步   :访问数据 的方式,同步 需要主动读写数据 ,在读写数据 过程中还是会阻塞

异步只需要I/O 操作完成的通知,并不主动读写数据 ,由于操作系统 内核完成数据 读写

水壶例子,老张烧水

同步阻塞: 老张一直等水烧开 

异步阻塞:老张用会响的水壶烧水,然后一直等

同步非阻塞,老张不等,时不时去看看水是否烧开

异步非阻塞,老张用会响的水壶,,然后水烧开后,老张听到响声去打水,

关键,同步 和异步关注的是消息的处理机制,  阻塞,非阻塞,关注的是进程是否被挂起,

 

转载于:https://www.cnblogs.com/xqnq2007/p/7755785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值