2012-04-19 30 views
5

活動對象的設計模式,因爲我明白的是佔用一個(私人/專用)螺紋壽命時間的對象並使其上獨立的數據工作。從一些我閱讀文檔的,這種模式的演變是因爲兩個原因,第一,管理原紗將是痛苦和第二多個線程競爭共享資源使用互斥和鎖不能很好地擴展。雖然我同意第一個理由,但我並不完全理解第二個理由。製造物體的活性只是使獨立的對象,而是像爭用鎖定/互斥的問題仍然存在(因爲我們仍然有共同的隊列/緩衝液),該對象正好委派共享責任到消息隊列。這種設計模式,因爲我看到的唯一優點是,我必須現在共享對象(上執行長非同步任務的情況下我只是消息傳遞到共享隊列,螺紋不再具有阻斷長上互斥/鎖,但他們仍然會阻止和爭奪發佈消息/任務)。除了這種情況之外,有人可以告訴更多的情況,這種設計模式會有其他優勢。要使用Active對象嗎?

第二個問題我是(我剛開始圍繞設計模式挖掘),是什麼之間,活動對象,反應器和攝器設計圖案的概念上的差異。你如何決定哪種設計模式更高效,並且更適合你的需求。如果某人能夠演示某些例子,顯示三種設計模式如何表現以及哪一種模式在不同情景下具有比較優勢/劣勢,那將非常好。我有一種困惑,因爲我已經使用活動對象(它使用共享線程安全緩衝區)和boost :: asio(Proactor)都做類似的異步的東西,我想知道如果任何人有在解決問題時更多地瞭解不同模式的適用性。

回答

4

ACE websiteActive Object,Proactor en Reactor設計模式上有一些非常好的論文。其意圖的簡短摘要:

主動對象設計圖案從方法調用去耦合方法執行 以增強併發和 簡化爲駐留在控制的其 自己的線程的對象的同步訪問。也稱爲:併發對象,演員。

模式支持多路分解及調度多個事件處理程序,這是由異步事件的完成 觸發 。這種模式在Boost.Asio中大量使用。

反應堆設計模式處理由一個或多個客戶交付 同時給應用程序的服務請求。在一個應用程序的每個服務 可以由幾種方法和由 表示一個單獨的事件處理程序,是負責分派服務特定 請求。也稱爲:分派器,通知程序。

相關問題