在C++中,`std::lock_guard`是一個RAII風格的智能指針,用于在構造時自動鎖定一個互斥量,并在析構時自動釋放該互斥量。它可以確保在作用域結束時自動釋放互斥鎖,避免了手動管理鎖的繁瑣操作,從而降低了因忘記釋放互斥鎖而導致的死鎖風險。
使用`std::lock_guard`時,需要傳入一個互斥量作為參數,然后將`std::lock_guard`對象實例化為需要加鎖的代碼塊的第一行,當作用域結束時,`std::lock_guard`對象會自動析構,釋放互斥鎖。
示例代碼如下:
```cpp
#include
#include
std::mutex mtx;
void foo()
{
std::lock_guard
// 互斥鎖已被鎖定
// 這里編寫需要保護的代碼塊
} // 作用域結束,lock_guard析構,互斥鎖自動釋放
int main()
{
foo();
return 0;
}
```
在示例代碼中,`std::lock_guard`對象`lock`會自動鎖定`mtx`互斥量,并在作用域結束時自動釋放。這樣可以確保在`foo`函數中對共享資源的訪問是受到互斥鎖的保護的,避免了多線程并發訪問造成的競爭條件。