读写锁rwlock⭐1. 核心特点读读共享多个线程可以同时加读锁读写互斥读与写不能同时进行写写互斥写与写不能同时进行适合场景读多写少2. 读锁 vs 写锁读锁共享锁可被多个线程持有写锁独占锁只能被一个线程持有3. 读写锁 API头文件#include pthread.h// 初始化 pthread_rwlock_init(rwlock, NULL); ​ // 加读锁 pthread_rwlock_rdlock(rwlock); ​ // 加写锁 pthread_rwlock_wrlock(rwlock); ​ // 解锁 pthread_rwlock_unlock(rwlock); ​ // 销毁 pthread_rwlock_destroy(rwlock);4. 互斥锁 vs 读写锁对比项互斥锁读写锁并发度低同一时间只一个线程高多个读者可同时读适用场景读写频率差不多读多写少特性完全互斥读读不互斥读写 / 写写互斥条件变量⭐1. 为什么需要条件变量解决线程轮询检查条件导致的CPU 浪费让线程在不满足条件时阻塞休眠满足时被唤醒2. 核心机制等待wait线程释放互斥锁 → 进入阻塞 → 等待被唤醒唤醒signal /broadcastsignal唤醒一个等待线程broadcast唤醒所有等待线程3. 条件变量 APIpthread_cond_t cond; // 定义条件变量 ​ // 初始化 pthread_cond_init(cond, NULL); ​ // 等待必须配合互斥锁使用 pthread_cond_wait(cond, mutex); ​ // 唤醒一个 pthread_cond_signal(cond); ​ // 唤醒所有 pthread_cond_broadcast(cond); ​ // 销毁 pthread_cond_destroy(cond);4. 关键注意点pthread_cond_wait会自动释放锁被唤醒后自动重新申请锁条件判断必须用while 循环不能用 if避免惊群效应必须和互斥锁搭配使用