种类 | 特点 | 适用场景 |
---|---|---|
互斥锁 pthread_mutex_t | 互斥,排它 临界区代码永远只有一个线程在执行 上锁解锁必须由由一个线程完成 | 互斥问题 |
信号量 sem_t | 限制访问共享资源的线程数量 信号量的wait/post可以不是同一个线程 | 信号量的值为1时可以当作互斥锁 且效率比互斥锁要高 |
条件变量 pthread_cond_t | 需要结合互斥锁才能使用 优化了等待的过程 | 生产者消费者模型、哲学家就餐问题 |
读写锁 pthread_rwlock_t | 共享-独占锁 读锁是共享锁 写锁是独占锁(互斥) | 读的频率远高于写的频率 提高并行性 |
屏障 pthread_barrier_t | 同步多个线程的执行进度 | 统筹线程的执行进度 |
自旋锁 pthread_spinlock_t | 互斥 lock时不能上锁一直占用CPU进行上锁 | 多核CPU 临界区小 |
线程同步的几种常用方法
最新推荐文章于 2024-07-22 20:42:27 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)