线程同步
目录 1. 线程同步概述 线程同步定义 线程同步方法 2. 互斥锁 互斥锁概念 互斥锁基本API 初始化与销毁 上锁与解锁 两个特殊的上锁函数 示例代码 3. 避免死锁 线程的死锁概念 产生死锁的四个必要条件 如何避免死锁 4. 条件变量 条件变量概念 条件变量基本API 初始化与销毁 等待条件满足 给线程发信号 示例代码 1. 线程同步概述 线程同步定义 线程同步,指的是 控制多线程间的相对执行顺序 ,从而在线程间 正确、有序地共享数据 ,以下为线程同步常见使用场合。 多线程执行的任务在顺序上存在依赖关系 线程间共享数据只能同时被一个线程使用 线程同步方法 在实际项目中,经常使用的线程同步方法主要分为三种: 互斥锁 条件变量 Posix信号量(包括有名信号量和无名信号量) 本节内容只介绍互斥锁和条件变量,Posix信号量后续在Posix IPC专题中介绍。 2. 互斥锁 互斥锁概念 互斥锁用于确保同一时间只有一个线程访问共享数据,使用方法为: 加锁 访问共享数据 解锁 对互斥锁加锁后,任何其他试图再次对其加锁的线程都会被阻塞,直到当前线程释放该互斥锁,解锁时所有阻塞线程都会变成可运行状态,但究竟哪个先运行,这一点是不确定的。 互斥锁基本API 初始化与销毁 互斥锁是用 pthread_mutex_t 数据类型表示的,在使用互斥锁之前,需要先进行初始化,初始化方法有两种: