news 2026/5/4 19:53:32

临界区和同一线程上锁

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
临界区和同一线程上锁

1、临界区:多个线程/进程会并发访问、且每次只能允许一个执行单元进入执行的代码片段;里面通常操作共享资源(包括全局变量、硬件寄存器、文件、数据库记录、队列等)。

2、临界区的作用就是:保护共享资源,保证操作原子性、一致性。

3、针对同一个线程死锁的问题处理:使用recursive_mutex,它允许同一个线程多次上锁,例如:线程中,函数A上锁后调用B,B同样上锁,使用mutex如果A未解锁的情况下,会造成死锁;使用recursive_mutex可以避免死锁,但是要注意的是:锁了几次,就要解锁几次,否则对于其他线程而言,仍然无法获得锁,仅仅是同一个线程能获得锁。

class Database { std::recursive_mutex mtx; public: void update() { mtx.lock(); // ... 更新数据逻辑 log_change(); // 内部也会 lock mtx.unlock(); } void log_change() { mtx.lock(); // 同一线程再次锁定,OK // ... 写日志 mtx.unlock(); } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 19:47:28

基于流量预测的卫星网络性能路由算法【附代码】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,扫描文章底部二维码。(1)GA-BP神经网络流量预测与特征构建:针对低轨卫星网…

作者头像 李华
网站建设 2026/5/4 19:37:31

实战应用:基于快马平台生成具备完整购物流程的9·1牛网专题页

实战应用:基于快马平台生成具备完整购物流程的91牛网专题页 最近在做一个电商专题页项目,需要实现完整的购物流程功能。正好发现了InsCode(快马)平台这个工具,它可以帮助快速生成项目代码,特别适合像我这样想快速验证想法或学习新…

作者头像 李华