ACE有一个非常好用的宏可以用来同步,就是ACE_GUARD_RETURN,只要用该宏,只需一句话就可以实现同步。
使用方法:
先声明一个锁:
ACE_Thread_Mutex lock_;
然后在需要加锁的地方加上下面以句就可以了:
ACE_GUARD_RETURN(ACE_hread_Mutex, guard, lock_, -1);
这句话的意思是:创建一个临时变量guard,如果失败返回-1。如果你不为该语句加作用域,则该语句的作用域会直到函数返回。
如果你想在局部加锁,可以这样用:
{
ACE_GUARD_RETURN(ACE_hread_Mutex, guard, lock_, -1);
// your code
}
这样在锁的作用域就被锁定在花括号{}内,出了花括号,锁就自动释放了,很是方便。