C++同步鎖管理的一種方法
template <class T>
class Guard
{
public :
Guard(const T & lock);
virtual ~Guard();
private:
const T & m_lock;
};
template <class T>
Guard<T>::Guard(const T & lock) :
m_lock(lock)
{
m_lock.acquire();
}
template <class T>
Guard<T>::~Guard()
{
m_lock.release();
}
我們可以在應用程序中這樣使用它:
void testFunc(.....)
{
Guard<MutexWrapper> guard(mutex);
...
}
在剛進入函數testFun(...),創建guard對象,并自動對mutex進行加鎖,對特定數據(resource)進行保護。當應用離開testFunc函數模塊時,根據guard對象的作用域和生命周期,此時guard對象的析構函數將被調用,因此將自動對mutex進行解鎖。在此之后應用的其他線程將可以訪問以前被mutex進行保護起來的資源。
posted on 2009-03-04 18:11 martin_yahoo 閱讀(4167) 評論(8) 編輯 收藏 引用