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