關於鎖的自動釋放

2021-06-08 23:09:39 字數 701 閱讀 8630

這種方案一直在用,但是一直沒能領會到它的意圖,也是在乙個面試過程中,被問到乙個此類問題,從而才想到的。

問題:當在乙個函式中使用鎖時,如果加鎖後由於某種原因(疏忽,異常等),沒有釋放鎖就直接退出了,那麼將導致鎖的狀態錯誤,怎樣解決這個問題?

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,...