在C ++ 14中,shared_lock
为reader-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
?