4.3.2 写法二{ pthread_mutex_lock(&mutex); // ToDo pthread_mutex_unlock(&mutex); pthread_cond_signal(&cond);}优点:不会出现之前说的那个潜在的性能损耗,因为在 signal 之前就已经释放锁了
缺点:如果 unlock 之后 signal 之前,发生进程交换,另一个进程(不是等待条件的进程)拿到这把梦寐以求的锁后加锁操作,那么等最终切换到等待条件的线程时锁被别人拿去还没归还,只能继续等待 。
参考资料
- linux线程互斥量pthread_mutex_t使用简介
- pthread_mutex_t 互斥锁 - 简书 (jianshu.com)
- C语言中pthread_cond_wait 详解
- Linux中,pthread_cond_t, 条件变量的使用举例
- linux进阶52——pthread_cond_t
- 关键字 - restrict
- *restrict 功能
经验总结扩展阅读
- VLQ & Base64 VLQ 编码方式的原理及代码实现
- MYSQL-->InnoDB引擎底层原理
- StampedLock:一个并发编程中非常重要的票据锁
- Longchamp龙骧饺子包
- <三>从编译器角度理解C++代码编译和链接原理
- <一>关于进程虚拟地址空间区域内存划分和布局
- GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署
- 🔥支持 Java 19 的轻量级应用开发框架,Solon v1.10.4 发布
- Bert不完全手册9. 长文本建模 BigBird & Longformer & Reformer & Performer
- XXI Open Cup, Grand Prix of Belarus 2020-2021 Winter Petrozavodsk Camp, Belarusian SU Contest 题解
