一、进程

  进程就是正在运行的程序,它会占用对应的内存区域,由CPU进行执行与计算,。进程的特点包括:

  并发性:可以多个进程并发执行、互不影响。

  独立性:进程有自己的内存空间,在当前进程没有允许的情况下,其他进程无法访问。

  动态性:程序集本身是静态的,但是加上时间的概念之后就有了运行时间跟生命周期,如此便可看做是进程。

二、线程

  线程是操作系统OS能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程可以开启多个线程,

其中有一个主线程来调用本进程中的其他线程。我们看到的进程的切换,切换的也是不同进程的主线程,

多线程可以让同一个进程同时处理多个任务,相当于扩展了进程的功能。

三、多线程

  每开辟一个线程都需要占用操作系统的时间,当有大量的程序需要执行的时候,高频率的占用cpu会严重损耗性能,为了解决频繁的

占用cpu的问题,线程池的概念油然而生。想象一下我们提前分配一个专门的空间来存放线程,当我们需要用的时候,我们不需要去新建,而是

直接从提前准备好的空间中拿,当我们使用完之后再放回去,是不是方便很多?

  这就是线程池的宏观概念,预先分配一定的资源充当线程池,以此满足大量的短暂的操作并发。当然要是一个线程长时间运行,就没必要

放到线程池中。事实上,在大部分情况下

  不得不注意的一点:线程池主要针对短暂的线程,以此节省操作系统的资源。

四、任务

  任务是线程中的单位,顾名思义,任务就像我们平常理解的那样。在编程中,我们可以把一个完整的系统拆分为多个功能,每个功能又可以拆分多个任务,

在线程里面,每个任务代表一个异步操作,当然一个任务也可以由多个任务组成(区别于线程)。创建一个任务的时候,系统会自动给你分配一个线程来执行

这个任务,当然这个线程是来自于线程池,就是说任务一定是运行在线程池里面的线程中。

谈到任务,就不得不说到任务并行库TPL(Task Parallel Library),线程池上的又一个抽象概念,应用于多个异步操作的调度。