多线程的基础

发布时间 2023-08-25 19:26:11作者: LiviaYu

linux和windows的差别

linux没有线程,windows系统有线程,但是两者对外部的表现是相同的

差别

  1. 线程有自己独立的地址空间,多个线程共用同一个地址空间
  • 线程更加节省系统资源,开销更少,效率更高
  • 每个线程有属于自己栈区和寄存器
  • 多个线程共享:代码区 堆区 全局数据区 打开的文件
    每个进程都会对应一个这样的虚拟地址空间
  1. 线程是cpu调度的基本单位,进程是资源分配的基本单位
  • 每个进程对应一个虚拟地址空间,一个进程只能抢一个cpu时间片
  1. 线程的上下文切换比进程要快得多

控制线程的个数

  1. 文件IO操作:文件IO对CPU的使用率不高,可以复用CPU时间片,线程的个数=2*CPU核心数
  2. 处理复杂的算法,线程的个数=CPU的核心数,效率更高