【发布时间】:2014-03-29 01:45:05
【问题描述】:
所以我有一个使用 rwlock 确保线程安全的数据结构。我有一个 RAII ScopedRWLock,它在创建时锁定,在析构函数时解锁。所以对于访问器函数,我有:
int GetValue() const
{
ScopedRWLock read_lock(&m_rwlock);
return m_value;
}
现在这不起作用,因为编译器抱怨 ScopedRWLock 带有 const。我尝试用普通的读取锁定和读取解锁替换 ScopedRWLock ,但也不起作用。那么问题是人们如何在实现 const-correctness 的同时实现常规(非无锁)线程安全??
谢谢
【问题讨论】:
-
您可能希望将您的
m_rwlock声明为mutable,因此即使使用 constthis也是非常量。
标签: c++ multithreading thread-safety const-correctness