查看线程数和进程数
在“进程”选项卡下,我们可以看到一个应用程序包含的线程数。如果一个应用程序有多个进程,我们能看到每一个进程,如在上图中,Google的Chrome浏览器就有多个进程。同时,如果打开了一个应用程序的多个实例也会有多个进程,如上图中我打开了两个cmd窗口,就有两个cmd进程。如果看不到线程数这一列,可以再点击“查看\选择列”菜单,增加监听的列。
查看CPU和内存的使用率:
在性能选项卡中,我们可以查看CPU和内存的使用率,根据CPU使用记录的监视器的个数还能看出逻辑处理核心的个数,如我的双核四线程的计算机就有四个监视器。
查看CPU和内存的使用率
线程的生命周期
当线程的数量小于处理器的数量时,线程的并发是真正的并发,不同的线程运行在不同的处理器上。但当线程的数量大于处理器的数量时,线程的并发会受到一些阻碍,此时并不是真正的并发,因为此时至少有一个处理器会运行多个线程。
在单个处理器运行多个线程时,并发是一种模拟出来的状态。操作系统采用时间片轮转的方式轮流执行每一个线程。现在,几乎所有的现代操作系统采用的都是时间片轮转的抢占式调度方式,如我们熟悉的Unix、Linux、Windows及macOS等流行的操作系统。
我们知道线程是程序执行的最小单位,也是任务执行的最小单位。在早期只有进程的操作系统中,进程有五种状态,创建、就绪、运行、阻塞(等待)、退出。早期的进程相当于现在的只有单个线程的进程,那么现在的多线程也有五种状态,现在的多线程的生命周期与早期进程的生命周期类似。
早期进程的生命周期
进程在运行过程有三种状态:就绪、运行、阻塞,创建和退出状态描述的是进程的创建过程和退出过程。
- 创建:进程正在创建,还不能运行。操作系统在创建进程时要进行的工作包括分配和建立进程控制块表项、建立资源表格并分配资源、加载程序并建立地址空间;
- 就绪:时间片已用完,此线程被强制暂停,等待下一个属于它的时间片到来;
- 运行:此线程正在执行,正在占用时间片;
- 阻塞:也叫等待状态,等待某一事件(如IO或另一个线程)执行完;
- 退出:进程已结束,所以也称结束状态,释放操作系统分配的资源。
线程的生命周期
- 创建:一个新的线程被创建,等待该线程被调用执行;
- 就绪:时间片已用完,此线程被强制暂停,等待下一个属于它的时间片到来;
- 运行:此线程正在执行,正在占用时间片;
- 阻塞:也叫等待状态,等待某一事件(如IO或另一个线程)执行完;
- 退出:一个线程完成任务或者其他终止条件发生,该线程终止进入退出状态,退出状态释放该线程所分配的资源。
协程,英文Coroutines,是一种基于线程之上,但又比线程更加轻量级的存在,这种由程序员自己写程序来管理的轻量级线程叫做『用户空间线程』,具有对内核来说不可见的特性。
因为是自主开辟的异步任务,所以很多人也更喜欢叫它们纤程(Fiber),或者绿色线程(GreenThread)。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。