C++11的mutex和RAII lock
时间: 2023-09-22 10:08:22 浏览: 129
C++11引入了原生的互斥锁(mutex)和RAII锁定(RAII lock),这让多线程编程更加容易和安全。互斥锁是一种同步机制,用于协调线程对共享资源的访问。RAII lock是使用资源分配是初始化(RAII)技术来锁定和释放互斥锁的类。
使用mutex和RAII lock时,需要使用std::mutex和std::lock_guard类。std::mutex提供了lock()和unlock()方法来锁定和释放互斥锁。std::lock_guard类是一个模板类,它使用RAII技术锁定互斥锁。当std::lock_guard对象离开作用域时,它会自动释放锁。
下面是一个使用mutex和RAII lock的示例代码:
```
#include <iostream>
#include <mutex>
std::mutex mtx;
void foo()
{
std::lock_guard<std::mutex> lock(mtx);
std::cout << "Hello from foo!" << std::endl;
}
int main()
{
std::lock_guard<std::mutex> lock(mtx);
std::cout << "Hello from main!" << std::endl;
foo();
return 0;
}
```
在上面的示例代码中,我们在main()函数和foo()函数中使用了std::lock_guard对象来锁定互斥锁。当std::lock_guard对象离开作用域时,它们会自动释放锁。这样就保证了多线程环境下对共享资源的安全访问。
阅读全文