多线程:原理分析整理
就是进行中的程序(一组指令的有序集合),当一个程序被加载到内存中之后就变成了进程(进程=程序+执行)。进程有独立的地址空间,在保护模式下自己出了问题不会对其他进程产生影响。进程是操作系统分配资源的基本单位。 进程的三种状态:
- 阻塞态:等待某个事件的完成
- 就绪态:等待系统分配CPU以便运行
- 执行态:占有CPU正在运行
线程
:
是进程的一个实体,是CPU调度和分派的基本单位,自己拥有一点运行必不可少的资源(如程序计数器、一组寄存器和堆栈)与同属进程的其他线程共享进程的拥有的全部资源。

进程与线程区别
- 进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。
- 一个程序至少有一个进程,一个进程至少有一个线程。线程依赖于进程才能运行
- 线程本身拥有很少资源(线程标识符、程序计数器、一组寄存器的值、堆栈),与同属进程的其他线程共享进程拥有的资源(代码段、数据段、打开的文件、I/O设备等)。
- 线程开销小,但一个线程死掉等于整个进程死掉,不利于资源管理和保护。而进程正好相反,开销大,但相对线程安全。
引入线程带来的主要好处:
以前 进程 既是资源分配也是调度的最小单位,后来为了更合理的使用cpu(实际上是cpu性能越来越好),才将资源分配和调度分开,就有了 线程 。 线程 是建立在 进程 的基础上的一次程序运行单位。
- 在进程内创建、终止线程比创建、终止进程快
- 同一进程内切换线程比切换进程要快,尤其是用户级的线程切换。
线程对 操作系统 来说就是 一段代码 +
运行时数据 (主要是寄存器数据,还有线程中与资源相关的数据,比如打开的文件句柄)。多线程实现主要是靠硬件 CPU(中央处理器)
件来实现的, CPU
有一个很重要的特性 时间片 ,每一段获得 CPU
的代码只能运行一个时间片限定的时间,时间到后 CPU
就会把正在运行的代码暂停,接着发生一个中断,然后按照一定的规则选择另一段代码获得 CPU
来运行。
时间片设得太短会导致过多的 进程切换 ,降低了CPU效率;而设得太长又可能引起对短的交互请求的 响应变差 。将时间片设为100毫秒通常是一个比较合理的折衷。