如何正確釋放Mutex

2021-04-08 14:22:37 字數 665 閱讀 5008

在使用mutex的時候,我們往往會陷入因為忘記釋放mutex而導致的麻煩,這個給程式設計師帶來很多的麻煩,根據c++標準可知,區域性變數在生命週期結束時,一定會被析構掉(除非在異常處理過程中,另外乙個異常在析構函式中被丟擲),所以我們不妨使用這種特性來完成mutex的鎖定和解鎖功能。它的基本思路時在建構函式中獲取鎖,在析構函式中釋放鎖。我定義了乙個模板類,用於此功能,希望對網友有所幫助。

// author    : wang yanqing

// module    : sync

// version    : 0.01

// date        : 03-aug-2005

// reversion:

// date        :

// email    : [email protected]

#ifndef _auto_lock_h

#define _auto_lock_h

#include

template

class autolock

~autolock()

}inline bool trylock()

return locked;

}inline void lock()

inline void unlock()

};#endif

JDBC資源正確釋放

rs.close stat.close conn.close 此處釋放資源必須按照一定的順序釋放,越晚獲取的越先關閉。所以先關閉 rs物件,再關閉stat物件,最後關閉conn物件。另,為了避免上面的程式丟擲異常,釋放資源的 不會執行,應該把釋放資源的 放在finally塊中.trycatch ex...

ArcEngine正確釋放資源

ae中對mdb,sde等資料庫操作時,開啟後卻往往不能及時釋放資源,導致別人操作提示物件被鎖定。很多帖子說了很多原理,看的也煩且不實用,比如一句話概括的用system.runtime.interopservices.marshal.releasecomobject object o 釋放,說的很不清...

AE正確釋放開啟資源

ae中對mdb,sde等資料庫操作時,開啟後卻往往不能及時釋放資源,導致別人操作提示物件被鎖定。很多帖子說了很多原理,看的也煩且不實用,比如一句話概括的用system.runtime.interopservices.marshal.releasecomobject object o 釋放,說的很不清...