STA和MTA執行緒模式的區別是什麼??? 頭有點暈了已經

2024-12-30 18:00:12 字數 1270 閱讀 7458

1樓:網友

問: 如果這樣說的話,那就是使用sta執行緒模式的程式應該是任何時候都是單執行緒執行的,那麼為什麼我的多執行緒程式還能正常執行呢?而且結果也是正確的。

你的程式到底是多執行緒還是單執行緒完全看你怎麼寫的,跟使用單執行緒還是多執行緒庫沒有任何關係。但是,在使用單執行緒庫時,如果你在非主執行緒(你程式進入主函式的第乙個執行緒是主執行緒)使用執行緒不安全的函式(如io函式,記憶體函式),那麼就有可能出現問題,當然這些問題你是否會碰到,這也要看具體情況。

如果使用多執行緒庫,也要注意符合其使用規矩,例如在哪個執行緒獲得的資源就在哪個執行緒使用,因為個別資源是執行緒敏感的。還有其他類似的問題。問題的碰到也要看你的**決定。

你就是恰好沒碰到那些問題,或沒有用到執行緒不安全的東西。

mta單元可以同時執行多個執行緒,並使用所有可用的共享資料」

在多個執行緒進行操作時,這個庫裡面的函式考慮到多執行緒可能帶來的問題(如io同步等),進行特別設計,這個庫儘量將多個執行緒可以共享的資源共享起來(在一定程度上io等確實可以共享起來),但是你最好小心使用,因為你的腦子比當前任何計算機都聰明。

2樓:花式碼農

sta模式是指任何時刻只能有乙個客戶執行緒來訪問該元件,不是說不能被多執行緒的客戶端來呼叫!你使用多執行緒來訪問sta物件的時候,請求會被序列化到乙個windows訊息佇列中,佇列中的請求逐個被執行,所以在編寫sta元件時,程式設計師無需關心執行緒同步的問題。

你在csdn的問題已經有人了,塊去看。

3樓:逯寒門子琪

sta:single-thread

apartment,中文叫單執行緒套間。就是在com庫初始化的時候建立乙個記憶體結構,然後讓它和呼叫coinitialize的執行緒相關聯。這個記憶體結構針對每個執行緒都會有乙個。

支援sta的com物件只能在建立它的執行緒裡被使用,其它執行緒如果再建立它就會失敗。

mta:mutil-thread

apartment,中文叫多執行緒套間。com庫在程序中建立乙個記憶體結構,這個記憶體結構在整個程序中只能有乙個,然後讓它和呼叫coinitializeex的執行緒相關聯。支援mta的com物件可以在任意執行緒裡被使用。

多有針對它的呼叫都會被封裝成為訊息。

其實sta和mta是com規定的一套執行緒模型,用於保障多執行緒情況下你的元件**的同步。比如說有乙個com物件它內部有乙個靜態變數。

ghello,那麼這個物件無論生成多少例項對於ghello在記憶體中只能有乙份,那麼如果有兩個不同的例項在兩個執行緒裡面同時去讀寫它,就有可能出錯,所以就要就要有種機制進行同步保護,sta或者mta就是這種機制。

cpu核和執行緒的區別,CPU的執行緒和核心數有什麼區別

intel有超執行緒技術,超執行緒 hyperthreadingtechnology 技術就是通過採用特殊的硬體指令,可以把兩個邏輯核心模擬成兩個物理超執行緒晶片,在單處理器中實現執行緒級的平行計算,同時在相應的軟硬體的支援下大幅度的提高執行效能,從而實現在單處理器上模擬雙處理器的效能。其實,從實質...

認真和嚴謹的區別是什麼,認真和嚴謹的區別是什麼?

認真是態度上重視,嚴謹是態度嚴肅,做事謹慎 嚴謹比認真更加一絲不苟 認真是態度?嚴謹是細心?仔細和認真有什麼區別 認真不能代表仔細。認真是態度,而仔細是對細節的考慮 程度不同,仔細比認真的程度還要高!嚴謹 和 認真 的區別是什麼?嚴謹是嚴肅 謹慎的意思,詞義範圍比認真要大一些,適用範圍也不一樣。嚴謹...

住持和方丈的區別是啥住持和方丈的區別是什麼?

方丈 一丈四方之室。又作方丈室 丈室。即禪寺中住持之居室或客殿,亦稱函丈 正堂 堂頭。印度之僧房多以方一丈為制,維摩禪室亦依此制,遂有方一丈之說 轉而指住持之居室。今轉申為禪林住持,或對 之尊稱。俗稱 方丈 或 方丈和尚 住持 住持之語義為 安住之 維持之 原意指代佛傳法 續佛慧命之人,後乃被用來指...