第六十二章:线程与并发
复习
- 多核允许不同任务真正同时运行。
TL;DR
- 线程是进程内部的一条执行线。
- 同一进程的线程共享地址空间,却各有寄存器和栈。
正文
浏览器下载网页时仍要响应点击,程序可把这些工作交给不同线程。进程提供资源和地址空间;线程提供独立的执行位置、寄存器现场和运行栈。同一进程的线程能轻易看到共同变量,也因此更容易彼此干扰。
并发指多项工作在时间上交错推进,即使只有一个核心也成立;并行指它们此刻真的在不同核心同时执行。并发让程序结构更贴近独立任务,并行才可能带来同时计算的速度提升。
不同进程不能天然共享变量,它们又该怎样交换信息?
思考题
同一进程的线程为什么通常不必复制整份代码和全局数据?
小结
- 线程共享进程资源,拥有各自执行现场。
- 并发不等于并行。
思考题答案(仅供参考)
这些内容属于同一个进程的地址空间,线程本来就在其中运行;只需各自保存栈和寄存器等私有状态。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。