本帖最后由 小小蚂蚁举千斤 于 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;
}
|