在C ++ 14中,shared_lock
为shared_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
?shared_locked
,它提供的功能与shared_mutex
相同,[增加了额外的功能以支持锁超时。
因此您可以将std::shared_timed_mutex
与std::shared_mutex
一起使用。最初认为这就是所需要的,但是实现者指出,他们可以通过省略超时功能来提高性能,因此std::shared_lock
被添加为单独的类型,但是现在添加到现在已经为时已晚。 C ++ 14,因此将其添加到C ++ 17。