Document
我有代表自定义文档的线程安全类。它有 getter(const 函数)和 setter 来修改它的状态。所有这些函数都是互斥保护的,以保证在方法完全执行之前不会更改文档。
但由于QMutex
使用情况,我无法将状态访问功能标记为const
未mutable
使用。捕捉QMutex
改变它的状态。
这段代码是正确的,还是可以用更好的方式编写?没有hackymutable
用法。
class Document
{
// This method should be const: it changes only mutex
// and don't touch document state
bool IsCorrect() const;
...
mutable QMutex m_lock;
};
bool Document::IsCorrect() const
{
// Capturing mutex object change it!
QMutexLocker lock( &m_lock );
... Const-aware code
bool result = ( m_context != NULL );
...
return result;
}