打印
[其它产品/技术]

互斥锁中的RAII

[复制链接]
427|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 小小蚂蚁举千斤 于 2024-3-28 19:23 编辑

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


#include <iostream>
#include <mutex>


class MutexRAII {
public:
explicit MutexRAII(std::mutex& mtx) : mutex(mtx) {
   mutex.lock();
    std::cout << "Mutex locked." << std::endl;
    }


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


private:
std::mutex& mutex;
};


int main() {
    std::mutex myMutex;


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


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

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


return 0;
}


使用特权

评论回复
沙发
LOVEEVER| | 2024-3-27 14:23 | 只看该作者
RAII也可用于管理互斥锁,但楼主这个乱码有点看不懂

使用特权

评论回复
板凳
jf101| | 2024-3-28 19:13 | 只看该作者
解决了死锁问题

使用特权

评论回复
地板
星辰大海不退缩| | 2024-3-29 08:17 | 只看该作者
互斥锁应该还有其他的写法吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

189

主题

1862

帖子

1

粉丝