天天看點

COM線程模型(一)

本文講解COM提出的各個類型的線程模型,再說明COM運作時期庫是如何實作它們的

線程模型是一種數學模型,專門針對多線程程式設計而提供的算法,但也僅是算法,不是實作。本文講解COM提出的各個類型的線程模型,再說明COM運作時期庫是如何實作它們的,就像說明Windows是如何實作線程這個數學模型的一樣,最後指明一下跨套間調用和各種類型套間編寫的要求以幫助了解。希望讀者對于Windows作業系統的線程這個概念相當熟悉,對何謂“線程安全的”亦非常了解。

COM線程模型

COM提供的線程模型共有三種:Single-Threaded Apartment(STA 單線程套間)、Multithreaded Apartment(MTA 多線程套間)和Neutral Apartment/Thread Neutral Apartment/Neutral Threaded Apartment(NA/TNA/NTA 中立線程套間,由COM+提供)。雖然它們的名字都含有套間這個詞,這隻是COM運作時期庫(注意,不是COM規範,以下簡稱COM)使用套間技術來實作前面的三種線程模型,應注意套間和線程模型不是同一個概念。COM提供的套間共有三種,分别一一對應。而線程模型的存在就是線程規則的不同導緻的,而所謂的線程規則就隻有兩個:代碼是線程安全的或不安全的,即代碼通路公共資料時會或不會發生通路沖突。由于線程模型隻是個模型,概念上的,是以可以違背它,不過就不能獲得COM提供的自動同步調用及相容等好處了。

繼續閱讀