‘shared_mutex’ in namespace ‘std’ does not name a type std::shared_mutex rwMutex; ^~~~~~~~~~~~ 0707_2.cpp:6:1: note: ‘std::shared_mutex’ is only available from C++17 onwards std::shared_mutex rwMutex;
时间: 2023-10-19 16:07:31 浏览: 289
非常抱歉,我之前给出的代码在C++14标准下是无法编译通过的。std::shared_mutex在C++14中不可用,只从C++17及以后版本才支持。
如果您仍然使用C++14并需要读写锁功能,可以考虑使用第三方库,如boost库,其中包含了boost::shared_mutex用于实现读写锁。
以下是一个使用boost库的示例代码:
```cpp
#include <iostream>
#include <boost/thread/shared_mutex.hpp>
#include <boost/thread/thread.hpp>
boost::shared_mutex rwMutex;
int sharedData = 0;
void ReadData()
{
boost::shared_lock<boost::shared_mutex> lock(rwMutex);
std::cout << "Read data: " << sharedData << std::endl;
}
void WriteData()
{
boost::unique_lock<boost::shared_mutex> lock(rwMutex);
sharedData++;
std::cout << "Write data: " << sharedData << std::endl;
}
int main()
{
boost::thread t1(ReadData);
boost::thread t2(ReadData);
boost::thread t3(WriteData);
t1.join();
t2.join();
t3.join();
return 0;
}
```
在上述示例中,我们使用了boost::shared_mutex和boost::unique_lock来实现读写锁。请确保在编译和运行代码之前已经安装了boost库。
如果您使用的是C++17或更高版本,可以直接使用std::shared_mutex来实现读写锁,而无需使用第三方库。
阅读全文