Posted on 2007-08-03 13:03
寶杉 閱讀(3591)
評論(2) 編輯 收藏 引用 所屬分類:
C++
* 非遞歸鎖:非遞歸鎖提供互斥的一種高效的形式,它定義一個臨界區,每一時刻只有單個線程可在其中執行。它們之所以是非遞歸的,是因為當前擁有鎖的線程在將其釋放前不可以再次獲取它。否則,就會立即發生死鎖。SunOS 5.x通過它的mutex_t、rwlock_t,和sema_t類型(POSIX Pthreads不提供后兩種同步機制)為非遞歸鎖提供支持。ASX構架提供Mutex、RW_Mutex,和Semaphore包裝,以分別封裝這些語義。
* 遞歸鎖:另外一方面,遞歸鎖允許acquire方法嵌套調用,只要當前擁有該鎖的線程就是試圖重新獲取它的線程。遞歸鎖對于回調驅動的事件分派構架(比如1.3.2描述的反應堆)特別有用,在其中構架的事件循環執行對預登記的用戶定義的對象的回調。因為隨后用戶定義的對象可能經由它的方法入口重入分派構架,必須使用遞歸鎖以防止在回調過程中構架持有的鎖發生死鎖。