.NET并发编程-基本概念
本系列学习在.NET中的并发并行编程模式,实战技巧
顺序
一次执行一个任务,按照步骤逐一完成任务,就是一次一条指令线性方式运行,下一个指令必须在上一个指令运行结束后开始。
像简单的For循环,按集合顺序执行。这是我们最常用也最不容易犯错,但容易被阻塞,以同步下载文件为例,就需要等文件下载完成落盘后进行下一步处理。
并发Concurrent
同时运行多个任务,将应用程序分成多个独立的过程,这些过程在不同的线程中同时并发运行。并发和并行比较容易搞混,在单核机器上并发是同一时刻只能有一条指令执行,但多个指令被快速的切换执行,从宏观上看就是同时执行的效果,微观上在单核机上一个线程执行,其他线程就处于挂起状态。
就像一个人啃三个馒头,来回的啃,一口这个馒头,一口那个馒头。只要切换的够快,你看三个馒头就是同时慢慢变小的。
并行Parallel
同时执行多个任务。并行只有在多核机器上才能实现。前面说到并发在单核机器微观上是串行执行的,但在多核中,就有可能是真正的同时执行。在多核中,一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,用时进行,这也就是并行。所以并行一定是并发的,并发就不一定是并行的,并行是并发的子集。
来三个人啃三个馒头,一人一个,谁也别抢谁的吃。
多任务
同时在一段时间内执行多个任务。这里的任务可以理解为进程,在Windows系统中的任务管理器就是查看的各个应用程序进程信息。起初多任务就是设计用来在单核机上同时执行多任务的,所以以前的单核计算机也可以运行多个应用程序。
计算机在多个任务之间多是采用抢占式切换
多线程
进程是资源分配的单元,线程是资源调度的单元,一个进程里至少有一个线程,教科书如此定义。多线程使应用程序能够在同一进程内细分为不同的线程任务。
to be contiued!
下集:为什么需要函数式编程实现并发?