c++ - Looking for a function (or a macro) to return a boost::scoped_lock -
i'm looking code shortening idea. i'm using boost::scoped_lock lock boost::mutex want shorten amount of code i'm writing.
currently have mutex defined in class , member field called _sync. when want lock, have write:
scoped_lock<mutex> lock(_sync);   the tricky part scoped lock, assume if write static function return scoped_lock, unlock gets out of function scope of static function:
static scoped_lock<mutex> lock(mutex& sync) {     return scoped_lock<mutex>(sync); }   this approach make easy type:
public void object::modify() {     lock(_sync); // <-- nice , short! ;)      // modify object     //..     // mutex unlocked when leave scope of modify }   is assumption correct? scoped_lock unlock when it's returned static function?
#define lock(a) scoped_lock<mutex> scopedlockvar(a)  public void object::modify() {     lock(_sync); // <-- nice , short! ;)      // modify object     //..     // mutex unlocked when leave scope of modify }   you should use safe name define... compiler uses find , replace defines...
Comments
Post a Comment