c#中的异步编程

本文探讨了C#中异步编程的概念,解释了异步方法并不等同于多线程,通过实例说明异步方法如何提高效率。同时讨论了为何有些异步方法不使用async关键字,并提到了异步编程的关键问题。
摘要由CSDN通过智能技术生成

章节目录

一.异步方法不等于多线程

二.为什么有的异步方法没用async

三.异步编程的几个重要问题

四.Lambda表达式

一.异步方法不等于多线程(借鉴一个博主的案例)

情景:你是一个饭店的厨师,有个订单过来了,要蒸鸡蛋和烤面包
同步:先做蒸鸡蛋,(哪怕是鸡蛋在蒸的时候没事干也不去烤面包,而是在干等),做完了蒸鸡蛋再去烤面包
异步:1.单线程 先做蒸鸡蛋,鸡蛋在蒸的时候,定好闹钟,然后去烤面包,面包在烤的过程中,也定个闹钟,当鸡蛋闹钟响起来的时候,不管是不是在给面包切片还是在等待面包烤熟,都去处理鸡蛋(如把鸡蛋从锅里端上来,送给客人),然后再回来处理烤面包,面包在烤的过程中可以打扫厨房,等烤面包的闹钟响起的时候,再去处理烤面包(如:送给客人)
2.多线程 请两个厨师给你打下手,一个去蒸鸡蛋,一个去烤面包,你做的主要的事情就是协调他们对物品的使用先后顺序,不要让他们因为抢一件东西(比如调料)而打起来(多线程的资源共享问题)。当然,请厨师是要付钱的(多线程的性能损耗)。

二.为什么有的异步方法没用async

有的时候,我们可能会发现有些异步方法没有关键字async,程序同样能够正常运行。
了解这个之前,我们需要知道async函数的缺点;

  • 异步方法是一个类(具体需要通过反编译工具看源代码),运行效率没有普通方法高。因为
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值