gpt4 book ai didi

c++ 两把锁比一把好吗?

转载 作者:太空狗 更新时间:2023-10-29 21:22:14 25 4
gpt4 key购买 nike

我有一个资源( vector 、列表等),我正试图授予多个作者/读者访问权限。

我不确定如何着手实现最佳性能,即如果数据结构被锁定,读取器的锁定量最少。使用两个锁,一个称为 readmutex,另一个称为 writemutex 会更好吗?

例如:

struct Foo {
mutex writemutex_;
mutex readmutex_;
vector<string> data_;
void write(string data)
{
lock_guard<mutex> locker(writemutex_);
data_.emplace_back(move(data));
}
string get(int index) const {
// I don't need to lock for read, but what if the data is being written?
// and so should I lock lockmutex_? If so, then readmutex_ is unnecessary?
// is there some cleaver way that I can avoid readers from being blocked?
return data_[index];
}

};

我可以在这里使用哪些其他同步技术?

最佳答案

你需要Readers–writer lock .但是你应该考虑到在某些情况下 rw lock 可能比 exclusive lock 慢

有很多实现,例如在 boost . WinAPI 也有 one (自 Vista 或 Server 2008 起)

关于c++ 两把锁比一把好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20966630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com