理解同步异步阻塞非阻塞

本文深入解析了同步与异步、阻塞与非阻塞的概念及其在程序设计中的应用。同步和异步关注消息通信机制,同步等待调用返回,异步通过通知或回调返回结果;阻塞与非阻塞关注调用状态,阻塞调用会挂起线程直到返回,非阻塞则允许线程继续执行。

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

1、同步、异步、阻塞、非阻塞理解?

1.1、同步与异步

​ 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)

​ 同步:当发出一个调用时,在没有得到返回之前,该调用就不返回。一旦调用返回,就一定得到了本次调用的返回值了。

​ 异步:当调用发出之后,这个调用就直接返回了,所以没有返回结果。但是本次调用的结果,会通过一个状态或者通知消息来通知本次调用者,然后拿到结果。

1.2、阻塞与非阻塞

​ 阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.

​ 阻塞:阻塞调用是指在调用结果返回之前,当前线程会被挂起。只有等到结果之后才会返回。

​ 非阻塞:非阻塞调用是指在不能立刻得到结果之前,该调用不会阻塞当前线程。

1.3、混合概念

​ 一、同步阻塞:当发出一个调用的时候,一直在等待返回的结果通知消息,期间不做其他任务处理。

理解:同步体现在,等待通知消息。阻塞体现在,期间不做其他任务处理

​ 二、同步非阻塞:当发出一个调用的时候,一边等待返回的结果通知消息,一边处理其他任务。此过程中 俩个任务,或者多个任务是要来回切换的。

理解:同步体现在,等待通知消息。非阻塞体现在,处理其他任务

​ 三、异步阻塞:当发出一个调用时,这个调用在完成时会发出一个完成的回调函数,或者是一个消息通 知,去告知发起者。期间不做其他任务处理。

理解:异步体现在,发出一个成功的回调函数或者消息通知。阻塞体现在:期间不做其他任务处理

​ 四、 异步非阻塞:当发出一个调用时,这个调用在完成时会发出一个完成的回调函数,或者是一个消息 通知,去告知发起者。期间做其他任务,不必关注这个调用函数完成情况。只需要接受完成的回调。

理解:异步体现在,发出一个成功的回调函数或者消息通知。阻塞体现在:期间做其他任务处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值