線程遞迴互斥:ACE_Recursive_Thread_Mutex類
來源:互聯網
上載者:User
ACE_Recursive_Thread_Mutex實現了wrappe模式,該類的功能在於允許同一個線程內可遞迴的擷取和釋放mutex。 成員函數
1. ACE_Recursive_Thread_Mutex
調用函數ACE_OS::recursive_mutex_init初始化互斥量說明:函數ACE_OS::recursive_mutex_init根據具體的作業系統分別調用ACE_OS::thread_mutex_init或者ACE_OS::thread_mutex_init和ACE_OS::cond_init初始化互斥量。
windows ACE_OS::thread_mutex_init
Solaris9和AIX5.2 ACE_OS::thread_mutex_init
ACE_OS::cond_init說明:函數ACE_OS::thread_mutex_init根據具體作業系統分別調用InitializeCriticalSection (m)或者
ACE_OS::mutex_init初始化互斥量
windows InitializeCriticalSection
Solaris9和AIX5.2 ACE_OS::mutex_init說明:ACE_OS::mutex_init調用
作業系統 早期互斥量
早期sun mutex_init
Solaris9和AIX5.2 pthread_mutexattr_init
pthread_mutexattr_setpshared
pthread_mutex_init
pthread_mutexattr_destroy說明:ACE_OS::cond_init調用
作業系統 早期互斥量
早期sun cond_init
Solaris9和AIX5.2 pthread_cond_init 2. recursive_mutex_lock
調用函數ACE_OS:: thread_mutex_lock擷取互斥量
調用函數ACE_OS:: thread_mutex_unlock釋放互斥量
調用函數ACE_OS::cond_wait等待條件變數 3. recursive_mutex_lock
調用函數ACE_OS:: thread_mutex_lock擷取互斥量
調用函數ACE_OS:: thread_mutex_unlock釋放互斥量
調用函數ACE_OS::cond_signal釋放條件變數類成員變數
1. ACE_recursive_thread_mutex_t lock_;2. int removed_; 類型說明
類型ACE_thread_mutex_t說明
各種作業系統的對應情況(OS_NS_Thread.h)
作業系統 早期互斥量
早期sun mutex_t
windows CRITICAL_SECTION
Solaris9和AIX5.2 pthread_mutex_t類型ACE_recursive_thread_mutex_t說明
對於solaris和AIX來說pthread_mutex_t 並不支援遞迴申請,所以需要使用一套機制來類比,對應類型ACE_recursive_thread_mutex_t是一個包括線程互斥量和條件變數的結 構。而Windows的CRITICAL_SECTION本身支援遞迴申請。 函數說明
函數thread_mutex_lock
thread_mutex_lock函數調用EnterCriticalSection或者ACE_OS::mutex_lock進入互斥區。
windows EnterCriticalSection
Solaris9和AIX5.2 ACE_OS::mutex_lock說明:函數ACE_OS::mutex_lock根據具體作業系統調用不同函數擷取互斥量
早期SUN mutex_lock
Solaris9和AIX5.2 pthread_mutex_lock