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 lock(mtx);

std::cout << "Reading data: " << shared_data <<

std::endl;

}。

接着,我们编写写入共享数据的函数:

cpp.

void write_data(int value) {。

std::unique_lock lock(mtx);

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中读写锁的基本用法。