2013-09-11 38 views
1

我在以下位置讀取活動對象上的一篇文章活動對象圖案建模建模爲單個對象

http://www.cs.wustl.edu/~schmidt/PDF/Act-Obj.pdf

本文描述了主動對象模式,其與方法調用去耦合法 執行爲了簡化同步對一個駐留在它自己的控制線程中的對象的訪問。 主動對象模式允許執行的一個或多個獨立線程將其對數據的訪問權交錯地模擬爲單個對象。大量的生產者/消費者和讀者/寫者應用程序適合這種併發模型。

我理解爲解耦方法調用如何方法執行。

我什麼也通過筆者如何主動對象模式允許一個或執行更多的獨立線程交錯其建模爲挑選對象的數據訪問的意思是問題嗎?

請求給出什麼呢通過建模爲單個對象和線程如何交織在這種情況下,數據authore平均一個例子。

感謝您的時間和幫助。

回答

0

一言以蔽之:圖案說,你可以把一個對象,其方法是在同一個線程中執行所有的內部狀態。通常,這是通過對象內的同步隊列來實現的。它的公共方法不直接完成工作,但他們只是在隊列中提出請求。然後,有一個線程逐個處理隊列中的請求。

這樣,活動對象中的數據只能由唯一的線程訪問,所以你不必擔心顯式同步(舉例來說,你不需要使用互斥)。

要到一點:「數據建模爲挑選對象」是包含在活動對象中的數據。它們由其他對象通過其唯一的線程訪問:每個方法調用由內部隊列中的請求表示,因此請求會交錯!

施密特在他的論文中詳細解釋了活動對象如何與示例一起工作。