为什么在shared_mutex之前引入了shared_locked

在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);
}

据我所知,在{strong> C ++ 17 中引入了shared_mutex,而在 C ++ 14 中引入了shared_lock。没有shared_lock,就不能使用shared_mutex

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

ccwysxbf1 回答:为什么在shared_mutex之前引入了shared_locked

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

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

最初相信这就是所需要的,但是实现者指出他们可以通过省略超时功能来提高性能,因此std::shared_mutex被添加为单独的类型,但是为时已晚添加到C ++ 14中,因此它被添加到C ++ 17中。

本文链接:https://www.f2er.com/2718892.html

大家都在问