Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第六十二章:线程与并发

复习

  • 多核允许不同任务真正同时运行。

TL;DR

  • 线程是进程内部的一条执行线。
  • 同一进程的线程共享地址空间,却各有寄存器和栈。

正文

  浏览器下载网页时仍要响应点击,程序可把这些工作交给不同线程。进程提供资源和地址空间;线程提供独立的执行位置、寄存器现场和运行栈。同一进程的线程能轻易看到共同变量,也因此更容易彼此干扰。

  并发指多项工作在时间上交错推进,即使只有一个核心也成立;并行指它们此刻真的在不同核心同时执行。并发让程序结构更贴近独立任务,并行才可能带来同时计算的速度提升。

  不同进程不能天然共享变量,它们又该怎样交换信息?

思考题

同一进程的线程为什么通常不必复制整份代码和全局数据?

小结

  • 线程共享进程资源,拥有各自执行现场。
  • 并发不等于并行。

思考题答案(仅供参考)

  这些内容属于同一个进程的地址空间,线程本来就在其中运行;只需各自保存栈和寄存器等私有状态。

协议

本文采用 CC BY-NC-SA 4.0 协议发布。