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