一、关于线程
定义:计算机利用的基本单元
组成:线程ID,程序计数器PC,寄存器集合,栈
线程间共享资源:代码段、数据段、其他操作系统资源(文件、信号)
多线程编程优点:
- 响应度高:即使部分阻塞或者执行时间较长的操作,程序仍然能继续执行
- 资源共享:允许一个应用程序在同一地址空间有多个不同的活动线程
- 经济:进程创建需要的内存和资源的分配都是开销,线程能共享所属进程的资源,所以创建和切换进程会更经济。
- 多处理器体系结构的利用:多线程可以充分地使用多处理器体系结构,加强了并发功能。
Amadahl's law:这个定理不是特别容易理解,这里只把公式以及各部分含义放上来:
speedup = 1/(s + (1-s)/n),这是一个计算加速比的公式,其中s是串行部分的比例,1-s就是并行部分的比例。