コード短縮のアイデアを探しています。boost::scoped_lock
をロックするために使用していますboost::mutex
が、記述しているコードの量を短縮したいと考えています。
現在mutex
、クラスで が定義されており、メンバー フィールドは と呼ばれて_sync
います。ロックしたいときは、次のように書く必要があります。
scoped_lock<mutex> lock(_sync);
注意が必要な部分は、これがスコープ付きロックであることです。そのため、scoped_lock を返す静的関数を作成すると、静的関数の関数スコープから出るとすぐにロックが解除されると仮定します。
static scoped_lock<mutex> lock(mutex& sync)
{
return scoped_lock<mutex>(sync);
}
このアプローチにより、入力が非常に簡単になります。
public void Object::modify()
{
lock(_sync); // <-- nice and short! ;)
// do something to modify the object
//..
// the mutex is unlocked when we leave the scope of modify
}
私の仮定は正しいですか?scoped_lock
静的関数によって返されたときにすぐにロックを解除しますか?