一、线程同步::线程之间协同工作,用于多线程访问临界资源时,必须按照一定的先后顺序访问执行
1、线程级的信号量
原子操作底层实现:
在操作之前将中断屏蔽
操作之后回复中断
进程间同步的信号量 是系统V信号量
线程间同步的信号量 POSIX 两个信号量不可以交换用
2、互斥锁(读写锁、自旋锁)
3、条件变量
二、线程安全
线程安全:相同的条件,同一份程序,多次执行结果不同,执行结果有二义性 ---- 》导致不安全
安全的原因:
1、线程是并发执行的或是并行的
2、操作是非互斥的 ---- 在并行系统上
3、操作系统的对象是同一个 线程之间数据共享
可重入函数:保证线程安全的函数 ---- > strtok
三、多线程环境
多线程环境
- 多线程环境下创建进程 由一个线程调用fork函数创建子进程,在子进程中,只有调用fork的线程会被启动,其他线程不会别执行
- 多线程环境下对锁进行加锁,然后创建进程,则子进程中对锁加锁可能会出死锁
-
保证子进程复制父进程的锁是解锁状态