众人拾柴火焰高
线程:或称轻量级进程,是程序执行流的最小单元。
线程访问权限:
私有:1)局部变量
2)函数参数
3)TLS数据
共享:1)全局变量
2)堆上的数据
3)函数里的静态变量
4)程序代码
5)打开的文件
线程的状态:1、运行 2、就绪 3、等待
线程调度遵从'优先级调度'和'轮转法',存在安全问题
系统调用:
liunx API:fork(写时复制)、exec(覆盖)、clone(创建子进程)
windows API:CreateProcess、CreateThread
线程安全:程序执行到一般被其他程序执行导致错误
避免方法:
1)原子操作(对于复制程序不适用)
2)同步与锁:
1、同步
2、二元信号量
3、互斥量
4、临界区
5、读写锁
6、条件变量
线程的可重入:类似于递归
禁止编译器优化(volatile、barrier)
多线程内部情况
1)一对一
2)一对多
3)多对多