2020-08-07

参考博客:
https://www.cnblogs.com/yswenli/p/11987377.html
https://www.cnblogs.com/wisdomqq/archive/2012/03/26/2412349.html
https://www.cnblogs.com/scy251147/archive/2012/03/03/2378477.html

1. 异步编程的相关概念

1.1 并发、并行、异步、多线程的概念

  1. 并发:对于某个系统,需要同时处理同个用户请求,多个用户请求的过程和处理多个用户请求的过程就叫并发。
  2. 并行:同一时刻有多件事情同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多个网络中。
  3. 异步:和同步相对,同步是顺序执行,而异步是彼此独立,在等待某个事件的过程中继续做自己的事,不要等待这一事件完成后再工作。异步不一定是多线程的,单线程也可以异步,通过线程切换,可以“同时”处理多个任务。异步和并行并不是完全互斥的,有重合的情况;两种概念只是侧重点不同。
  4. 多线程:一般指同一进程中多个线程协作运行。

2. 直接使用多线程的异步方式

3. 基于BackgroundWorker的异步方式

3.1 BackgroundWorker类介绍

BackgroundWorker类后新建另一个线程,在后台持续运行某项工作,不持续和主线程进行通信。BackgroundWorker类结果如下图所示:
1)四个属性
- WorkerReportsProgress(R/W):表示后台线程的进度信息是否汇报给主线程。
- WorkerSupportsCacllation(R/W) :表示后台线程是否支持在主线程中取消。
- IsBusy®:表示后端线程是否忙(是否完成)
- CancellationPending®:表示是否在主线程中取消了后台线程。
2)三个事件(由主线程指定)

DoWork:用于承载异步操作。当调用BackgroundWorker.RunWorkerAsync()时触发。需要注意的是,由于DoWork事件内部的代码运行在非UI线程之上,所以在DoWork事件内部应避免于用户界面交互,而于用户界面交互的操作应放置在ProgressChanged和RunWorkerCompleted事件中。对应的委托类型如下,sender表示调用对象(即BackgroundWorker本身),DoWorkEventArgs包含三个参数:
Argument表示

  1. 基于BeginInvoke和EndInvoke的异步方式

  2. 基于Task的异步方式
    Task是基于任何的异步模式的中心组件之一,表示异步方式的单个操作。

  3. 并行计算

  4. 计时器

异步编程

async方法在开始时以同步方式执行,在async方法内部,await关键字对它参数执行一个异步等待,它首先检查操作是否已经完成,如果完成,就继续运行(同步方式),否则,会暂停async方法,并返回.留下一个未完成的task,一段时间后,操作完成,async方法就恢复执行.

任务和线程的区别:
1、任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行。

 2、任务跟线程不是一对一的关系,比如开10个任务并不是说会开10个线程,这一点任务有点类似线程池,但是任务相比线程池有很小的开销和精确的控制。

Task 类表示通常以异步方式执行的单个操作,

并行,一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多个网络中。

多线程,一般指同一进程中多个线程(包含其数据结构、上下文与代码片段)协作运行。在多核计算机中多个线程将有机会同时运行于多个核上,如果线程中进行的是计算,则行成并行计算。

异步

使用线程异步化

APM模式(就是BeginXXX和EndXXX成对出现。)
EAP模式(就是Event based, 准确说来就是任务在处理中或者处理完成,会抛出事件)
Task

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值