什么是多线程、超线程、CPU密集型、IO密集型
文章目录多线程是编程中的重点,那么我们就需要了解其中的原理,有问题欢迎探讨
- 前言
- 一、超线程
- 二、单核和多核的那些事
- 1.多线程
前言
提示:在了解多线程之前先了解一下什么是线程和进程
简而言之,进程是操作系统资源分配的基本单位。一个程序在运行时有一个或者多个进程。线程是操作系统能够进行运算调用的最小单位。一个进程运行时有一个或者多个线程。
提示:以下是本篇文章正文内容
一、超线程在购买电脑时,通常会有标注CPU是六核12线程或者8核8线程等。这里6核12线程就是一个物理核心会分为两个逻辑核心进行并行运算,但是会共享CPU核心资源,所以效率不如两个物理核心,但是相对单核来说,能够提高大概百分之三十的效率。
比如6核12线程,就是说电脑的CPU可以同时并行运算12个进程。根据操作系统和CPU的分时调度,那么电脑上是可以运行远超12个进程。
多线程我的理解其实是分供应端和需求端。首先就是CPU需要可以开启多线程,以及程序是多线程的程序。
比如单核非多线程运行多线程程序的情况
那么只能是说在进程分到的时间片内,第一个线程完成了工作,CPU的资源才会调度到第二个线程内。加入第一个线程在执行IO读写操作的时候时间太长,那么电脑就只能等。
如果是单核开启多线程运行多线程的情况
在进程分到的时间片,线程1因为IO读写占用时间长,那么CPU就去处理第二个线程。
总体来说,两个线程完成的总时间是不变的
那么多核心多线程的情况
加入说在分到的时间片内,可以由多个CPU来完成不同的线程。也可以涉及到分配。
那么说到CPU密集型和IO密集型。
CPU密集型适合多线程吗,CPU密集型因为CPU的负载比较大,所以最好不要开启多线程,一核心负责一线程就最好了。因为涉及到切换线程造成的时间浪费问题。如果是IO密集型,那么CPU负载比较小,空闲时间多,那么适合使用多线程。



