同步、异步、并发的区别

留下一个赞,留下一份专属于你的足迹!

1、同步

定义

同步操作中,调用方会一直等待被调用方完成操作后才能继续执行后续代码。

例如:将一只大象放入冰箱,首先要打开冰箱门,然后放入大象,关上冰箱门

同步代码示例

Console.WriteLine("打开冰箱门");
Console.WriteLine("放入大象");
Console.WriteLine("关上冰箱门");

程序执行的流程是按顺序、阻塞式进行的。

2、异步

定义

异步操作允许调用方在发起操作后,不需要一致等待操作完成,可以继续执行其他任务,等被调用方完成操作后,通过某种方式(如回调)通知调用方。

例如:淘宝购物,首先下单,而后等待快递的信息通知到网点取宝贝。

异步代码示例

async Task Main(string[] args)
{
	 Console.WriteLine("付款下单盲盒");
	 string content = await TransportationAsync();
	 Console.WriteLine("等待的运输过程中,在做其他事情");
	 Console.WriteLine(content);
	 Console.WriteLine("盲盒有风险,购买需谨慎TT");
	 
}
async Task<string> TransportationAsync()
{
   Thread.Sleep(10000);
   return await "签收,盲盒拆开 是一只袜子";
;}

在调用TransportationAsync()方法后,会立刻执行后续的代码,TransportationAsync()中是进行了10s的延迟,通过await机制返回结果,而在这10s的延迟中,外部方法可以做其他的事情。

3、并发

定义

指多个任务在同一时间段内同时进行,这些任务可能是交替执行或者并行执行。
例子: 课堂中的学生。学生们在同样的时间段中,做着自己(不同)的事情。

并发代码示例

void Main(string[] args)
{
	 Console.WriteLine("上课了");
	 Task sutdent1 = Task.Run(()=>StudentAction("手写记笔记", 10000));
	 Task sutdent2 = Task.Run(()=>StudentAction("电脑记笔记", 5000));
	 Task sutdent3 = Task.Run(()=>StudentAction("肚子痛上厕所", 15000));
	//等待所有任务完成
	Task.WaitAll(sutdent1 , sutdent2, sutdent3);
	 Console.WriteLine("下课了");
}

void StudentAction(string action,int delayTime)
{
	Thread.Sleep(delayTime);
	 Console.WriteLine(action);	
}

4、总结

同步阻塞式操作,顺序执行;

异步非阻塞式操作,允许在等待操作完成时继续执行其他任务,并常常通过async和await关键字来简化异步编程模型;

并发是多个任务同时进行,强调任务的并行性或者同时推进性,可以通过多线程等待来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张钧泽林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值