coost
coost copied to clipboard
你好 协程里是否可以使用std的读写锁?
我有一个简单的缓存类 他给别的进程使用通过co库建立的套接字通信 每个读/写都是一个协程 读写操作都在一个实例里进行是否可以像下面一样使用std的读写锁进程操作?
void Cache::set(const std::string &key, const std::string &value, std::chrono::seconds expirationTime)
{
std::unique_lock<std::shared_mutex> lock(mutex_);
if (expirationTime.count() == 0)
{
expirationTime = defaultExpirationTime_;
}
CacheItem item{value, std::chrono::steady_clock::now(), expirationTime};
cache_[key] = item;
}
std::string Cache::get(const std::string &key)
{
std::shared_lock<std::shared_mutex> lock(mutex_);
auto it = cache_.find(key);
if (it == cache_.end())
{
return "";
}
const CacheItem &item = it->second;
auto now = std::chrono::steady_clock::now();
if (item.expirationTime.count() > 0 && (now - item.timestamp > item.expirationTime))
{
cache_.erase(it);
return "";
}
return item.data;
}
```