2010-06-17 24 views
1

目前我正在閱讀另一個由他人編寫的文檔,我很困惑。大部分內容是關於編寫本文檔的項目中實現的多線程同步。一個無法解釋的模式

在這個項目中,這個程序員實現了一些控制整個應用程序中使用的關鍵部分的類。

它只是一堆類跟蹤哪個線程具有什麼關鍵部分,並且是本機Win32 CRITICAL_SECTION結構的包裝。

然後有以-Visit結尾的類,這些類在應用程序中實際使用,並將檢查臨界區是否在進入之前已進入線程。

這位程序員稱之爲'Acquisition design pattern',我想知道是否存在這樣的模式,並且可能將其稱爲別的東西,然後這個程序員稱它爲什麼,因爲我無法在任何地方找到這個名字下的模式?

我知道我還沒有詳細介紹,但是我可以詳細瞭解更多細節。

+2

在軟件開發中有一些規則,設計模式儘可能模糊和不直觀地命名;訪問者,工廠,適配器,複合,模板,權重和狀態模式?不妨稱他們爲紅色模式,藍色模式,綠色模式,黃色等等。除非您已經非常熟悉實施細節,否則這些名稱毫無意義。 – Juliet 2010-06-17 15:08:05

+0

@Juliet,常見模式的名字並不是因爲某個標準委員會決定從現在開始使用這些模式,而是因爲許多人發現它們具有直觀性和描述性,所以它們開始使用它們。從我記得的(從GoF書籍和其他地方),大多數模式確實有多個名稱,所以出現了一些術語競爭,並且自然選擇了最好的模式。 – 2010-06-17 15:22:56

+0

@Juliet,當然不是所有的名字都是完美的,但我個人認爲可以傳達一些粗略的想法。一個工廠或適配器不知道所有細節的細節。無論如何,如果你認爲你對任何模式都有更好的名字,請隨時傳福音:-) – 2010-06-17 15:28:52

回答

0

當我實現這樣的類,其目的如下:

  • 裹的O/S的原語(例如,關鍵段)
  • 登錄它們的使用
  • 檢測deadly embrace,通過跟蹤哪些線程擁有哪些鎖,並在獲取每個鎖前測試致命的擁抱
  • 通過跟蹤線程獲取鎖的順序來預測並避免致命擁抱的工具(例如lockA後跟loc kB),記住這是'通常的順序',然後警告一個線程是否以不正常順序鎖定(例如, lockB後跟lockA)。