为什么 shared_locked 在 shared_mutex 之前介绍

Why shared_locked introduced before shared_mutex

在 C++14 中有 shared_lock as reader-writer lock. This you must use in conjunction with 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_lock是在C+中引入的+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。