Kir*_*ril 2 c++ boost function shortcut scoped-lock
我正在寻找代码缩短的想法.我正在使用boost::scoped_lock锁定boost::mutex但我希望缩短我正在编写的代码量.
目前我mutex在我的班级中定义了一个名为的成员字段_sync.当我想要锁定时,我必须写:
scoped_lock<mutex> lock(_sync);
Run Code Online (Sandbox Code Playgroud)
棘手的部分是这是一个范围锁,所以我假设如果我写一个静态函数来返回scoped_lock,那么它一旦离开静态函数的函数范围就会解锁:
static scoped_lock<mutex> lock(mutex& sync)
{
return scoped_lock<mutex>(sync);
}
Run Code Online (Sandbox Code Playgroud)
这种方法可以很容易地输入:
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
}
Run Code Online (Sandbox Code Playgroud)
我的假设是否正确?scoped_lock当我的静态函数返回时会立即解锁吗?
别 ...
当你输入scoped_lock<mutex> lock(_sync)所有人时,阅读你的代码知道发生了什么,如果你看了两年后的代码,你也会知道.懒惰通常是创建实施的不良动机.除非您想强制使用,否则只需要编写此表达式的数百个地方,就行不了
在你写这个问题的时候,以及你花时间思考如何去做的时间,以及我们所有人为回答你的问题所花费的时间,你可能已经写下了scoped_lock<mutex> lock(_sync)你需要的所有内容.特别是如果您使用IDE完成支持.
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |