2024年6月9日发(作者:)
c++14 读写锁例子
C++14引入了读写锁(std::shared_mutex),它允许多个线程
同时读取共享数据,但在写入数据时会进行互斥锁定。下面我将给
出一个简单的示例,演示如何在C++14中使用读写锁。
首先,我们需要包含相应的头文件:
cpp.
#include
#include
#include
接下来,我们创建一个共享数据结构和一个
std::shared_mutex对象来保护这个数据结构:
cpp.
std::shared_mutex mtx;
int shared_data = 0;
然后,我们可以编写读取共享数据的函数:
cpp.
void read_data() {。
std::shared_lock
std::cout << "Reading data: " << shared_data <<
std::endl;
}。
接着,我们编写写入共享数据的函数:
cpp.
void write_data(int value) {。
std::unique_lock
shared_data = value;
std::cout << "Writing data: " << shared_data <<
std::endl;
}。
最后,我们创建一些线程来读取和写入共享数据:
cpp.
int main() {。
std::thread reader1(read_data);
std::thread reader2(read_data);
std::thread writer(write_data, 42);
();
();
();
return 0;
}。
在这个示例中,我们使用std::shared_lock来创建一个共享的
读取锁,它允许多个线程同时读取共享数据。而在写入数据时,我
们使用std::unique_lock来创建一个独占的写入锁,确保在写入数
据时不会有其他线程同时进行读取或写入操作。
总的来说,C++14中的读写锁提供了一种灵活的机制,可以在
多线程环墶中高效地保护共享数据。当然,这只是一个简单的示例,
实际应用中可能会涉及更复杂的场景和更多的线程管理。希望这个
例子能够帮助你理解C++14中读写锁的基本用法。

发布评论