У меня есть класс, в котором есть элемент boost::mutex. Проблема в том, что вызывающему объекту может потребоваться выполнить серию вызовов класса, удерживая мьютекс. Но я не хочу предоставлять коду, находящемуся за пределами класса, в мьютексе.
Я хотел бы сделать что-то вроде этого (псевдокод):
Код: Выделить всё
class MyClass
{
private:
boost::mutex mLock;
public:
boost::scoped_lock& ScopedLock(return ScopedLock(mLock));
}
Код: Выделить всё
MyClass f;
if(foo)
{
boost::scoped_lock lock(f->GetScopedLock());
f->LockedFunc1();
f->LockedFunc2();
}
У меня два основных вопроса:
1) Как я могу это сделать?
2) Разумно ли это?
Примечание : Это полностью отличается от вопроса с таким же названием: return a boost::scoped_lock.
Подробнее здесь: https://stackoverflow.com/questions/808 ... coped-lock