1:ice的併發情形下線程安全問題?
多線程意味着,來自客戶的多個調用可以在服務器中併發執行。事實上,在同一個servant 中,以及在同一servant 的同一個操作中,都可以有多個請求在並行執行。因此,如果在操作實現中,涉及到對非棧存儲的操縱(比如servant 的成員變量、全局變量,或靜態變量),你必須對數據訪問進行互鎖,以防止數據損壞。
1.1: 如何確定線程池大小依據?
1.2: 內部調用至少使用2個線程
配置:
動態配置: name.Size=3 name.SizeMax=5 name.ThreadIdleTime=10
2 同步和異步問題?
2.1 同步編程模型:發出調用的線程會阻塞到操作返回。每個客戶佔有一個線程。
2.2 異步編程模型:
Client: 異步方法調用(AMI):使用AMI發出遠地調用,在Ice run time等待答覆的同時,發出調用的線程不會阻塞。相反,發出調用的線程可以繼續進行各種活動,當答覆最終到達時,Ice run time會通知應用。通知是通過回調發給應用提供的編程語言對象的。 Server: 異步方法分派(AMD):使用AMD時,服務器可以接收一個請求,然後掛起其處理,以儘快釋放分派線程。當處理恢復、結果已得出時,服務器要使用Ice run time提供的回調對象,顯式地發送響應。
3 oneway、twoway和雙向和單向的關係
oneway、twoway是一種代理模式 單向和雙向針對連接來說的。