gpt4 book ai didi

c++ - 为什么shared_locked先于shared_mutex引入

转载 作者:行者123 更新时间:2023-12-01 19:56:35 26 4
gpt4 key购买 nike

在 C++14 中,有 shared_lockreader-writer lock 。您必须将其与 shared_mutex 结合使用。 。示例:

// my shared data
std::shared_mutex mut;
Data data;

void process_data(const Data *); // read-only function
void update_data(Data *);

// multiple threads can read data
void read_data(){
std::shared_lock lk(mut);
process_data(&data);
}

// only one thread can read data
void write_data(){
std::unique_lock lk(mut); // exclusive lock
update_data(&data);
}

据我所知,shared_mutex是在C++17中引入的,晚于shared_lockC++中引入的14。如果没有 shared_mutex,则无法使用 shared_lock

如果当时没有shared_mutex,为什么要在C++14中引入shared_locked

最佳答案

在 C++14 中,有 std::shared_timed_mutex,它提供与 std::shared_mutex 相同的功能,还添加了额外的函数支持锁超时

因此,您可以将 std::shared_lockstd::shared_timed_mutex 一起使用。

最初,人们认为这就是所需要的全部,但后来实现者指出,他们可以通过省略超时函数来提高性能,因此将 std::shared_mutex 添加为单独的类型,但这已经太晚了,无法添加到 C++14,因此它被添加到 C++17。

关于c++ - 为什么shared_locked先于shared_mutex引入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59895388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com