[其它产品/技术] 互斥锁中的RAII

[复制链接]
 楼主| 小小蚂蚁举千斤 发表于 2024-3-26 19:00 | 显示全部楼层 |阅读模式
本帖最后由 小小蚂蚁举千斤 于 2024-3-28 19:23 编辑

RAII也可用于管理互斥锁,确保在离开作用域时锁被正确释放,避免因异常或其他原因导致的死锁。


  1. #include <iostream>
  2. #include <mutex>


  3. class MutexRAII {
  4. public:
  5. explicit MutexRAII(std::mutex& mtx) : mutex(mtx) {
  6.    mutex.lock();
  7.     std::cout << "Mutex locked." << std::endl;
  8.     }


  9.   ~MutexRAII() {
  10.   mutex.unlock();
  11.         std::cout << "Mutex unlocked." << std::endl;
  12.    }


  13. private:
  14. std::mutex& mutex;
  15. };


  16. int main() {
  17.     std::mutex myMutex;


  18. try {
  19.         {
  20.             MutexRAII lock(myMutex);           // 在这里进行受保护的操作,不用担心忘记释放互斥锁
  21.        }


  22.       // 在这里互斥锁已经被释放</p><p>

  23.    }
  24. catch (const std::exception& e) {
  25.         std::cerr << "Exception: " << e.what() << std::endl;
  26.     }


  27. return 0;
  28. }


LOVEEVER 发表于 2024-3-27 14:23 | 显示全部楼层
RAII也可用于管理互斥锁,但楼主这个乱码有点看不懂
jf101 发表于 2024-3-28 19:13 | 显示全部楼层
解决了死锁问题
星辰大海不退缩 发表于 2024-3-29 08:17 | 显示全部楼层
互斥锁应该还有其他的写法吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

225

主题

2536

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

225

主题

2536

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部