环境:
- window10
- vs2019.16.5.1
- .netcore 3.1.1
线程:
Thread,由CLR提供,可以提供细粒度的线程控制,但是在返回值、多个线程并行/串行时候显得功能不足,需要进一步封装才行,而且线程的开启、停止都需要时间开销,乱用的话还造成浪费。
线程池:
ThreadPool,由CLR提供,提供粗粒度的线程控制,主要用来执行短时间内执行的代码片段,一个进程有一个线程池,由CLR统一调度。它对线程的控制力较少,而且在返回值、多个线程并行/串行时候显也是功能不足。
任务:
Task,对ThreadPool和Thread的包装,可以根据任务时间长短选择使用线程池还是新的线程,通过进一步扩展,增加了返回值、多个线程并行/串行等功能。它的核心是一个调度器,默认是ThreadPoolTaskScheduler。
关系图: