同步与异步、堵塞与非堵塞

本文通过张三买奶茶的例子,清晰解释了同步与异步是线程的通信模式,堵塞与非堵塞是线程的处理模式。同步是等待结果返回,异步是允许在结果返回前进行其他操作;堵塞是任务执行期间无法进行其他任务,非堵塞则是可以执行其他任务。总结了四种组合方式,并强调两者之间的区别和联系。

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

前言

本文通过一个简单的例子带大家搞懂什么是同步和异步、堵塞和非堵塞

定义

  • 同步和异步是线程的通信模式
  • 堵塞和非堵塞是线程的处理模式

先给出总结性的定义,看不懂没关系,请继续往下看。

堵塞和非堵塞

首先我们举个简单的例子:

张三要去买菜,买菜的路上突然看到了一家奶茶店,于是他决定先买杯奶茶再去买菜。

张三点了奶茶后发现奶茶的制作要一定的时间,现在张三就有两个选择:

  1. 原地等待,等待奶茶制作好后再去买菜
  2. 不等了,先去买菜,买完菜后再回来取奶茶

在这里插入图片描述

如果张三选择了第一种选择 - 原地等待,那么我们就可以理解为张三的行动被奶茶店堵塞住了,因为他需要等到奶茶制作完毕后才能继续行动去买菜,这种模式就是堵塞

如果张三选择了第二种,不等奶茶制作好而是先去买菜,然后再回来取奶茶,那么张三的行动就没有被堵塞住,这种模式就是非堵塞

堵塞和非堵塞是线程的处理模式

我们可以把张三看作为线程,而买奶茶和买菜则是线程需要完成的两个任务。

我们不难发现线程的行为是否被堵塞取决于线程如何做选择或处理,若选择等待某个任务完成后再继续下一个任务&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值