【发布时间】:2011-07-20 21:44:15
【问题描述】:
我正在寻找代码缩短的想法。我正在使用boost::scoped_lock 锁定boost::mutex,但我想缩短我正在编写的代码量。
目前我在我的班级中定义了一个mutex 和名为_sync 的成员字段。当我想锁定时,我必须写:
scoped_lock<mutex> lock(_sync);
棘手的部分是这是一个作用域锁,所以我假设如果我写一个静态函数来返回作用域锁,那么它一旦离开静态函数的函数作用域就会解锁:
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 在我的静态函数返回时会立即解锁吗?
【问题讨论】:
-
你为什么不用短名称键入def
scoped_lock<mutex>?这使得打字变得容易。 -
@Lirik:好的。现在我知道我已经删除了我的一半对话,因为你似乎没有破坏封装。
-
@Martin... 我删除了所有的 cmets 以减少混乱。
标签: c++ function boost shortcut scoped-lock