在計算機編程和工程方面,活動對象是一種設計模式,可用于幫助確保某些服務在多線程或并發系統中始終可用。活動對象是實現一種機制的對象,它可以接收和處理來自外部對象的輸入,而不必強迫外部對象等待執行完成這種機制還允...
在計算機編程和工程方面,活動對象是一種設計模式,可用于幫助確保某些服務在多線程或并發系統中始終可用。活動對象是實現一種機制的對象,它可以接收和處理來自外部對象的輸入,而不必強迫外部對象等待執行完成這種機制還允許許多可能同時運行的對象使用活動對象,而不需要長時間阻塞,在這種情況下,并發進程必須停止并等待訪問。這通常是通過將活動對象包裝在一個可公開訪問的接口(稱為代理)中,然后實現對象內部的一種隊列系統,用于存儲消息以備以后處理。這將創建一種設計模式,在這種模式中,對象將消息發送給活動對象,然后繼續進行處理,直到活動對象處理消息,然后將結果通知調用對象,以便它們可以相應地更新其狀態

主動對象設計模式之外的手持計算機,一個普通的對象可以被稱為被動對象。在一個簡單的程序示例中,被動對象可以充當聊天服務器中繼,在這個中繼中,遠程對象與被動對象聯系以將消息傳輸給服務器上的其他所有人。每當被動服務器對象從遠程對象接收到聊天消息時,它必須立即處理請求,然后立即發送輸出,所有這一切都是在遠程對象停止自己的執行,直到進程完成,這種效果稱為阻塞在程序中創建不同的線程可以解決執行阻塞問題,但隨后會引發同步問題,上例中的同一個服務器對象將在它自己的線程中運行,與其他對象分開運行。它也會被包裝在一種稱為代理的接口中,該接口也在一個單獨的線程中運行,有時是主程序執行線程。當遠程對象希望服務器對象發送聊天消息時,它聯系代理對象,向它傳遞所需的所有信息,然后返回到其正常執行狀態,而不是等待。然后代理接口將遠程對象的信息轉換為消息,并將其傳遞到隊列中供活動對象處理。此時,代理接口和遠程對象都可以自由地繼續執行,不會被阻塞,同時,活動對象保持隊列為空,處理每個傳入消息。如果調用對象需要活動對象返回一些信息,然后可以使用回調結構通知遠程對象狀態的任何更改。