2010-06-28 73 views
0

COM如何確保在多核機器上保持同步,如果您有COM對外處理服務器和COM客戶端彼此依賴,如果你在多核架構上運行它,事情不會受到影響?COM在多核心機器上的多線程體系結構

+0

您會有什麼特別的問題? – sharptooth 2010-06-28 13:23:38

+0

如果CPU A運行COM客戶端的線程A,並且CPU B運行COM服務器的線程A,現在如果它們互相依賴,並且COM服務器更新了客戶端正在處理的某些內容的值,則客戶端將使用錯誤的數據。 – 2010-06-28 13:30:22

回答

2

在你的評論中,你會問如果COM客戶端運行在一個線程和COM服務器上 - 在另一個線程上會發生什麼。這兩個線程駐留在不同的進程中(因爲服務器是out-proc)。

如果您的客戶端使用了一個out-proc COM服務器COM子系統使用RPC(本地RPC)與服務器進行通信。這對客戶端來說是透明的 - 客戶端調用方法,RPC準備一個包含所有參數的字符串,阻塞客戶端線程,將調用傳遞給服務器,服務器處理調用abd返回給客戶端。沒有併發訪問,所以沒有額外的同步問題 - 所有的同步都是自動完成的。

0

由於您的COM服務器不在proc中,因此客戶端和服務器的線程在不同的進程中運行。 Windows中的進程間同步機制適用於核心或處理器,因此COM子系統已經爲您處理任何多核/處理器問題。

如果您的服務器端數據可能在客戶端不知情的情況下發生變化,那麼這對於單CPU /內核也是一個問題 - 您需要使用輪詢(錯誤)或客戶端通知接口來解決此問題(更好)。