- Windows 8應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)
- 童明編著
- 775字
- 2019-01-09 13:37:31
1.5.4 Windows Runtime的線程模型
1.線程模型
· Windows Runtime與COM的線程模型相同,基于Apartments。
· 非GUI對(duì)象是MTA的,而GUI對(duì)象是STA的。
· STA在程序啟動(dòng)時(shí)創(chuàng)建,STA運(yùn)行所有的UI代碼以及負(fù)責(zé)傳遞消息,不允許重入。
1)STA
一個(gè)對(duì)象只能由一個(gè)線程訪問(wèn)(通過(guò)對(duì)象的接口指針調(diào)用其方法),其他線程不得訪問(wèn)這個(gè)對(duì)象,因此對(duì)于這個(gè)對(duì)象的所有調(diào)用都是同步的,對(duì)象的狀態(tài)(也就是對(duì)象的成員變量的值)肯定是正確變化的,不會(huì)出現(xiàn)線程訪問(wèn)沖突而導(dǎo)致對(duì)象狀態(tài)錯(cuò)誤。其他線程要訪問(wèn)這個(gè)對(duì)象,必須等待,直到那個(gè)唯一的線程空閑時(shí)才能調(diào)用對(duì)象。這個(gè)模型很像Windows提供的窗口消息運(yùn)行機(jī)制,因此這個(gè)線程模型非常適合于擁有界面的組件。
2)MTA
一個(gè)對(duì)象可以被多個(gè)線程訪問(wèn),即這個(gè)對(duì)象的代碼在自己的方法中實(shí)現(xiàn)了線程保護(hù),保證可以正確改變自己的狀態(tài)。這對(duì)于作為業(yè)務(wù)邏輯組件或用于后臺(tái)服務(wù)的組件非常適合。因?yàn)樽鳛橐粋€(gè)分布式的服務(wù)器,同一時(shí)間可能有幾千條服務(wù)請(qǐng)求到達(dá),如果排隊(duì)進(jìn)行調(diào)用,那么將是不能想像的。
注意:這也只是一個(gè)要求、希望、協(xié)議而已。
3)Apartment
被翻譯成套間或是單元,是線程模型的一個(gè)實(shí)現(xiàn)者,就像在操作系統(tǒng)課程中講到的線程只是一個(gè)數(shù)學(xué)模型,而Windows的線程、進(jìn)程是它(數(shù)學(xué)模型的線程、進(jìn)程)的實(shí)現(xiàn)者。套間只是邏輯上的一個(gè)概念,實(shí)現(xiàn)時(shí)只是一個(gè)結(jié)構(gòu)(由WinRT管理)而已,記錄相關(guān)信息,如它的種類(只能是上面那三個(gè),至少現(xiàn)在是),并由WinRT根據(jù)那個(gè)結(jié)構(gòu)進(jìn)行相應(yīng)的處理。
2.異步模型
異步方法旨在成為非阻塞操作。當(dāng)?shù)却娜蝿?wù)運(yùn)行時(shí),在異步方法的一個(gè)等待表達(dá)式不會(huì)阻止當(dāng)前線程。相反,該表達(dá)式注冊(cè)該方法的其余部分作為繼續(xù)并返回控制對(duì)異步方法的調(diào)用方法。
Windows Runtime中的異步方法都是以Async結(jié)尾的,并且返回IAsyncOperation<T>。在調(diào)用時(shí)通過(guò)await關(guān)鍵字等待異步方法執(zhí)行。異步方法運(yùn)行在后臺(tái)線程里,在后臺(tái)線程里不能訪問(wèn)UI的元素,當(dāng)任務(wù)完成時(shí)如果需要將結(jié)果封送返回給UI線程,可以用CoreDispatcher類實(shí)現(xiàn),否則會(huì)報(bào)跨線程操作的異常。
- 人工智能超越人類
- PowerShell 3.0 Advanced Administration Handbook
- 機(jī)器學(xué)習(xí)及應(yīng)用(在線實(shí)驗(yàn)+在線自測(cè))
- 西門子S7-200 SMART PLC從入門到精通
- CorelDRAW X4中文版平面設(shè)計(jì)50例
- RPA(機(jī)器人流程自動(dòng)化)快速入門:基于Blue Prism
- 構(gòu)建高性能Web站點(diǎn)
- 信息物理系統(tǒng)(CPS)測(cè)試與評(píng)價(jià)技術(shù)
- 分?jǐn)?shù)階系統(tǒng)分析與控制研究
- Machine Learning with the Elastic Stack
- Flink原理與實(shí)踐
- Microsoft Dynamics CRM 2013 Marketing Automation
- Hands-On Business Intelligence with Qlik Sense
- DynamoDB Applied Design Patterns
- 網(wǎng)頁(yè)設(shè)計(jì)與制作