這種方案一直在用,但是一直沒能領會到它的意圖,也是在乙個面試過程中,被問到乙個此類問題,從而才想到的。
問題:當在乙個函式中使用鎖時,如果加鎖後由於某種原因(疏忽,異常等),沒有釋放鎖就直接退出了,那麼將導致鎖的狀態錯誤,怎樣解決這個問題?
1、沒有正常釋放鎖:
就像下面的程式一樣(這裡僅作為示例,選用mutex):
#include
#include
using namespace std ;
pthread_mutex_t m ;
void print1(int i)
~mymutex()
void lock()
void unlock()
}private:
pthread_mutex_t* _mutex ;
};#define mutex_lock(m) \
mymutex mymutex(&m); \
mymutex.lock() ;
#define mutex_unlock() \
mymutex.unlock() ;
pthread_mutex_t m ;
void print2(int i)
~mymutex()
void lock()
{cout<<"mutex_lock"<
關於UIImage自動釋放問題
在做iphone和ipad應用中,可能很多人都會用到xib和storyboard。在寫 時,我們在載入一張時,經常會這樣寫到 uiimage imagenamed text.png 用於的載入。而在xib和storyboard中使用uiimageview控制項時,一般會在這裡放名字。但是注意記憶體的...
很好的設計 鎖的自動使用和釋放
多執行緒下,常常會使用互斥鎖或者讀寫鎖來確保臨界區的正確使用。pthread mutex lock mutex using critical section pthread mutex unlock mutex 如果在使用臨界區期間發生異常返回,導致鎖沒有釋放。為了防止這種現象發生,我們通常要在每個...
oracle檢測鎖,釋放鎖
檢測鎖 select a.owner,a.object name,b.xidusn,b.xidslot,b.xidsqn,b.session id,b.oracle username,b.os user name,b.process,b.locked mode,c.machine,c.status,...