相关疑难解决方法(0)

寻找函数(或宏)来返回boost :: 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当我的静态函数返回时会立即解锁吗?

c++ boost function shortcut scoped-lock

2
推荐指数
1
解决办法
521
查看次数

标签 统计

boost ×1

c++ ×1

function ×1

scoped-lock ×1

shortcut ×1