为什么在shared_mutex之前引入了shared_locked

问题描述 投票:1回答:1

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

shared_mutex

据我了解,shared_mutex是在[[C ++ 17中引入的,后来才是// 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); } C ++ 14中引入的。没有shared_mutex,就不能使用shared_lock

如果当时没有shared_lock,为什么在C ++ 14中引入shared_mutex
c++ locking c++14 c++17 mutex
1个回答
2
投票
在C ++ 14中,有shared_locked,它提供的功能与shared_mutex相同,

[增加了额外的功能以支持锁超时。

因此您可以将std::shared_timed_mutexstd::shared_mutex一起使用。

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

© www.soinside.com 2019 - 2024. All rights reserved.