std::lock_guard<std::mutex>作用域
时间: 2024-01-22 15:04:22 浏览: 227
std::lock_guardstd::mutex是C++中的一个RAII(资源获取即初始化)类模板,用于管理互斥量的锁定和解锁。它的作用是在其作用域结束时自动释放互斥量的锁。
使用std::lock_guardstd::mutex可以确保在离开作用域时,互斥量一定会被正确地解锁,从而避免了忘记解锁的问题。
面是一个示例代码,演示了std::lock_guardstd::mutex的作用域:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
void printHello()
{
std::lock_guard<std::mutex> lock(mtx); // 在函数作用域内创建std::lock_guard对象,锁定互斥量
std::cout << "Hello" << std::endl;
// 在作用域结束时,std::lock_guard对象析构,自动解锁互斥量
}
int main()
{
std::thread t1(printHello);
std::thread t2(printHello);
t1.join();
t2.join();
return 0;
}
在上面的示例中,我们创建了两个线程t1和t2,它们都会调用printHello函数。在printHello函数内部,我们创建了一个std::lock_guardstd::mutex对象lock,它会在函数作用域结束时自动解锁互斥量mtx。这样,当一个线程执行完printHello函数后,另一个线程才能获取到互斥量的锁。