Spiga

异步编程

2016-05-04 11:00:21

参考

C#执行异步操作的几种方式比较和总结

异步与多线程的区别(异步是目的,多线程是实现它的一种方式,异步的优先级有时候比主线程还高) - 子福当自强 - 博客园

c#异步编程

JavaScript异步机制与异步原理

异步编程的本质:绑定 - zzfx - 博客园

异步编程的本质:怎么处理异步请求(事件)与响应的关系

进阶篇:以IL为剑,直指async/await

官方文档 使用 Async 和 Await 的异步编程

.NET 异步详解 --能说清楚异步与多线程的区别,涉及到操作系统原理

await,async 我要把它翻个底朝天,这回你总该明白了吧

异步开发是什么

异步开发,就是利用线程技术,当执行一个占用时间长的任务时,不会阻止用户其它工作,而且其完成时会通知用户。

虽然是通过多线程来实现异步,但是因为一般异步时耗时的操作都不是针对CPU的,所以对CPU压力影响不大。

异步本质是通过线程池提高线程的利用率。

  • 异步采用IO的DMA模式,不会消耗CPU资源。计算密集的工作,采用多线程。IO密集的工作,采用异步
  • 举例:网络爬虫爬数据,如果数据很庞大,这个时候就需要使用异步了。
  • DMA:Direct Memory Access是IO的操作模式,可以直接访问内存,不经过CPU,不消耗CPU资源。
  • 异步和多线程区别就是,充分利用DMA释放CPU压力。
  • 异步实现方式:.net中实现异步的方式有定时器和多线程,一般都是使用多线程。

**使用场景:**要执行耗时且不需要立刻返回结果的操作,如:I/O操作、网络操作

争议:

有种说法是:异步是不阻塞当前主线程执行,通过子线程去执行,还有总说法刚好相反,具体参考:异步与线程阻塞

同步、异步、并行区别

同步:代码执行顺序默认是一行一行执行的,要等当前行的代码执行完后,才会执行下一行的代码。

异步:不用等当前行代码执行完毕就会执行下一行的代码。异步编程是一项关键技术,可以直接处理多个核心上的阻塞 I/O 和并发操作

并行:许多个人计算机和工作站都有多个 CPU 内核,以便多个线程能够同时执行。 为了利用硬件,你可以对代码进行并行化,以将工作分摊在多个处理器上。

并行和多线程、异步和多线程有啥关系?

异步和多线程:多线程是创建多个线程,消耗的是CPU,异步呢?

异步方法返回类型:void、Task、Task​

异步编程模式: