版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材第1頁(yè)電子科大成都學(xué)院計(jì)算機(jī)系電子科大成都學(xué)院計(jì)算機(jī)系課件制作:羅福強(qiáng)、楊劍課件制作:羅福強(qiáng)、楊劍E-Mail:LFQ501SOHU.COm2022-5-162012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四
2、川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第2頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材1. 總體要求總體要求v 了解進(jìn)程及線程的概念。了解進(jìn)程及線程的概念。v 掌握使用掌握使用C#進(jìn)行多線程的創(chuàng)建及簡(jiǎn)單控制。進(jìn)行多線程的創(chuàng)建及簡(jiǎn)單控制。v 掌握線程的同步策略。掌握線程的同步策略。v 了解線程池技術(shù)。了解線程池技術(shù)。v 掌握異步編程的設(shè)計(jì)與實(shí)現(xiàn)技術(shù)掌握異步編程的設(shè)計(jì)與實(shí)現(xiàn)技術(shù)2. 學(xué)習(xí)重點(diǎn)學(xué)習(xí)重點(diǎn)v 線程的啟動(dòng)、管理和終止線程的啟動(dòng)、管理和終止v 線程安全的實(shí)現(xiàn)線程安全的實(shí)現(xiàn)v 異步編程的實(shí)現(xiàn)方法。異步編程的實(shí)現(xiàn)方法。2012年年2月月29日日10時(shí)時(shí)35分分Visual C#
3、.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第3頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材線程創(chuàng)建與控制線程創(chuàng)建與控制多線程的同步多線程的同步多線程的概念多線程的概念9.4線程池線程池異步編程異步編程9.59.52012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第4頁(yè)人
4、民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材線程和進(jìn)程線程和進(jìn)程v9.1.2 線程的生命周期和狀態(tài)線程的生命周期和狀態(tài)v9.1.3 線程的優(yōu)先級(jí)線程的優(yōu)先級(jí)2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第5頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v進(jìn)程是一個(gè)正在運(yùn)行的應(yīng)用程序進(jìn)程是一個(gè)正在運(yùn)行的應(yīng)用程序,擁有獨(dú)立的擁有獨(dú)立的資源,進(jìn)程之間相互隔離,互不干擾資源,進(jìn)程之間相互隔離,互不干擾。v線程是操作系統(tǒng)
5、分配處理器時(shí)間的基本單元。線程是操作系統(tǒng)分配處理器時(shí)間的基本單元。一個(gè)進(jìn)程可以包含一個(gè)或多個(gè)線程。線程共享一個(gè)進(jìn)程可以包含一個(gè)或多個(gè)線程。線程共享其所屬進(jìn)程所擁有的資源其所屬進(jìn)程所擁有的資源。v線程處理通常分為兩大類:線程處理通常分為兩大類:v(1)單線程處理單線程處理:指一個(gè)進(jìn)程中只能有一個(gè)線程指一個(gè)進(jìn)程中只能有一個(gè)線程v(2)多線程處理多線程處理:指將一個(gè)進(jìn)程劃分為多個(gè)線程指將一個(gè)進(jìn)程劃分為多個(gè)線程,可可最大限度地利用處理器和用戶的時(shí)間,提最大限度地利用處理器和用戶的時(shí)間,提高系統(tǒng)的效率。高系統(tǒng)的效率。2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序
6、設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第6頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v從線程被創(chuàng)建到被終止稱為線程的生命周期從線程被創(chuàng)建到被終止稱為線程的生命周期。2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第7頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材優(yōu)先級(jí)屬性最高Highest具有該優(yōu)先級(jí)的線程會(huì)最先被考
7、慮調(diào)度執(zhí)行較高Above Normal具有該優(yōu)先級(jí)的線程會(huì)在最高優(yōu)先級(jí)的線程之后、正常優(yōu)先級(jí)的線程之前被考慮調(diào)度執(zhí)行正常Normal具有該優(yōu)先級(jí)的線程會(huì)在較高優(yōu)先級(jí)的線程之后、較低優(yōu)先級(jí)的線程之前被考慮調(diào)度執(zhí)行較低Below Normal具有該優(yōu)先級(jí)的線程會(huì)在正常優(yōu)先級(jí)的線程之后、最低優(yōu)先級(jí)的線程之前被考慮調(diào)度執(zhí)行最低Lowest具有該優(yōu)先級(jí)的線程會(huì)最后被考慮調(diào)度執(zhí)行2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第8頁(yè)人民郵
8、電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v9.2.1創(chuàng)建和啟動(dòng)線程創(chuàng)建和啟動(dòng)線程v9.2.2 控制線程控制線程2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第9頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v 在在.NET中,用戶只需要利用中,用戶只需要利用System.Threading提提供的大量線程編程類和接口來(lái)處理線程即可。供的大量線程編程類和接口來(lái)處理線程即可。其其中中,Thread類提供創(chuàng)建并控制線
9、程、設(shè)置線程優(yōu)先級(jí)并獲類提供創(chuàng)建并控制線程、設(shè)置線程優(yōu)先級(jí)并獲取運(yùn)行狀態(tài)等功能取運(yùn)行狀態(tài)等功能。v Thread類的常用屬性包括:類的常用屬性包括:uCurrentThread:獲取當(dāng)前正在運(yùn)行的線程uIsAlive:獲取當(dāng)前線程的執(zhí)行狀態(tài)。如果此線程已啟動(dòng)并且尚未正常終止或中止,則為 true;否則為 false。uName:獲取或設(shè)置線程的名稱(默認(rèn)為null)。uPriority:獲取或設(shè)置線程的調(diào)度優(yōu)先級(jí)(默認(rèn)為ThreadPriority.Normal)uThreadState:獲取當(dāng)前線程的狀態(tài)。2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程
10、序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第10頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v創(chuàng)建線程時(shí),首先創(chuàng)建一個(gè)創(chuàng)建線程時(shí),首先創(chuàng)建一個(gè)Thread類的對(duì)象類的對(duì)象,其其構(gòu)造函數(shù)的參數(shù)是一個(gè)構(gòu)造函數(shù)的參數(shù)是一個(gè)ThreadStart委托委托,該委托用來(lái)引用一個(gè)被托管了的作為新的線,該委托用來(lái)引用一個(gè)被托管了的作為新的線程執(zhí)行的方法。然后,調(diào)用程執(zhí)行的方法。然后,調(diào)用Thread對(duì)象的對(duì)象的Start()方法啟動(dòng)并執(zhí)行新的線程。方法啟動(dòng)并執(zhí)行新的線程。v操作演示:實(shí)例操作演示:實(shí)例9-1v詳
11、細(xì)代碼:見教材詳細(xì)代碼:見教材v執(zhí)行效果:執(zhí)行效果:2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第11頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v 1暫停和恢復(fù)線程暫停和恢復(fù)線程v (1) 使用使用Thread.Sleepu立即將當(dāng)前線程阻塞若干ms,進(jìn)入WaitSleepJoin狀態(tài)。調(diào)用Thread.Interrupt可提前恢復(fù)。v (2) 使用使用Thread.Suspendu將當(dāng)前線程阻塞,但可調(diào)用Th
12、read.Resume恢復(fù)。注意:與Sleep不同的是,Supspend不會(huì)使線程立即停止執(zhí)行,一切由CLR安排;如果線程尚未啟動(dòng)或已經(jīng)停止,則不能將其掛起。v (3) 使用使用Thread.Joinu強(qiáng)制一個(gè)線程等待另一個(gè)線程而停止。2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第12頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v2中斷和中止線程中斷和中止線程v(1) 使用使用Thread.Interruptu調(diào)
13、用方法可中斷處于休眠的線程,將其重新放回調(diào)度隊(duì)列中,可引發(fā)ThreadInterruptedException異常。v(2) 使用使用Thread.Abortu調(diào)用該方法可永久地終止一個(gè)線程,可引發(fā)ThreadAbortException異常。u操作演示: 【實(shí)例9-2】u詳細(xì)代碼:見教材u運(yùn)行效果:2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第13頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v9.3.1線程安全
14、線程安全v9.3.2 線程同步策略線程同步策略2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第14頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v線程安全是指在多個(gè)線程并發(fā)使用某個(gè)對(duì)象時(shí)線程安全是指在多個(gè)線程并發(fā)使用某個(gè)對(duì)象時(shí),該對(duì)象成員總是保持有效狀態(tài)。,該對(duì)象成員總是保持有效狀態(tài)。v1爭(zhēng)用條件爭(zhēng)用條件u兩個(gè)或多個(gè)線程同時(shí)訪問(wèn)同一數(shù)據(jù)或資源時(shí)會(huì)導(dǎo)致不符合要求或無(wú)法預(yù)期的結(jié)果。v例如,有兩個(gè)線程例如,有兩個(gè)線程A和和
15、B,A線程要設(shè)置全局變線程要設(shè)置全局變量量X的值,的值,B線程要讀取線程要讀取X的值。假設(shè)線程的值。假設(shè)線程A完完成了任務(wù),設(shè)置了成了任務(wù),設(shè)置了X的值,線程的值,線程B才讀取才讀取X。這。這是一種合理并符合要求的情況。但如果是一種合理并符合要求的情況。但如果A還未完還未完成賦值,成賦值,B就開始讀取,這時(shí)就會(huì)產(chǎn)生就開始讀取,這時(shí)就會(huì)產(chǎn)生A、B兩兩個(gè)線程同時(shí)爭(zhēng)奪變量個(gè)線程同時(shí)爭(zhēng)奪變量X的現(xiàn)象,最終導(dǎo)致的現(xiàn)象,最終導(dǎo)致B讀取讀取一個(gè)錯(cuò)誤的值。這就是爭(zhēng)用條件一個(gè)錯(cuò)誤的值。這就是爭(zhēng)用條件2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川
16、省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第15頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v2死鎖死鎖u如果多個(gè)線程彼此等待對(duì)方釋放其所占用的資源,則也會(huì)遇到線程安全問(wèn)題。這種對(duì)線程執(zhí)行的阻塞稱為死鎖。v例如,線程例如,線程A為從賬戶為從賬戶1向賬戶向賬戶2轉(zhuǎn)賬,先獲取轉(zhuǎn)賬,先獲取賬戶賬戶1的鎖,然后準(zhǔn)備獲取賬戶的鎖,然后準(zhǔn)備獲取賬戶2的鎖,而此時(shí)的鎖,而此時(shí),線程,線程B為從賬戶為從賬戶2向賬戶向賬戶1轉(zhuǎn)賬,先獲取賬戶轉(zhuǎn)賬,先獲取賬戶2的鎖,然后準(zhǔn)備獲取賬戶的鎖,然后準(zhǔn)備獲取賬戶1的鎖,在這種情況的鎖,在這種情況下,兩
17、個(gè)線程都因在等待對(duì)方已獲取的鎖而阻下,兩個(gè)線程都因在等待對(duì)方已獲取的鎖而阻塞,并且由于兩個(gè)線程都被阻塞,所以沒(méi)有一塞,并且由于兩個(gè)線程都被阻塞,所以沒(méi)有一個(gè)線程會(huì)釋放另一個(gè)線程繼續(xù)執(zhí)行所需的鎖,個(gè)線程會(huì)釋放另一個(gè)線程繼續(xù)執(zhí)行所需的鎖,形成死鎖。形成死鎖。2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第16頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v 為了防止因?yàn)楣蚕碣Y源而使線程無(wú)法正確執(zhí)行,為了防止因?yàn)楣蚕碣Y源而
18、使線程無(wú)法正確執(zhí)行,可通過(guò)可通過(guò)線程線程同步策略來(lái)實(shí)現(xiàn)線程安全同步策略來(lái)實(shí)現(xiàn)線程安全。v 1同步上下文同步上下文u上下文是一組有序的屬性或規(guī)則,同步上下文策略就是直接使用.NET的SynchronizationAttribute類的構(gòu)造函數(shù)對(duì)駐留在上下文中、符合上下文規(guī)則的對(duì)象啟用簡(jiǎn)單的自動(dòng)同步,確保同一時(shí)刻只有一個(gè)線程可以訪問(wèn)該對(duì)象。u可以使用SynchronizationAttribute屬性為當(dāng)前上下文和所有共享同一實(shí)例的上下文強(qiáng)行創(chuàng)建一個(gè)同步域,保證在上下文中只能有一個(gè)線程執(zhí)行。v 操作演示:實(shí)例操作演示:實(shí)例9-3v 詳細(xì)代碼:見教材詳細(xì)代碼:見教材2012年年2月月29日日10時(shí)時(shí)
19、35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第17頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v 2同步代碼區(qū)同步代碼區(qū)v 該策略是只對(duì)特定的代碼區(qū)域進(jìn)行同步操作。這些特定的代該策略是只對(duì)特定的代碼區(qū)域進(jìn)行同步操作。這些特定的代碼區(qū)一般多為方法中重要的代碼段。除了可以同步實(shí)例方法碼區(qū)一般多為方法中重要的代碼段。除了可以同步實(shí)例方法外,該策略還可以對(duì)靜態(tài)方法實(shí)施同步。外,該策略還可以對(duì)靜態(tài)方法實(shí)施同步。v (1) Monitor類類:u其思想是首先
20、用其Enter()方法獲得一個(gè)鎖,然后用其Exit()方法釋放該鎖。一個(gè)線程一旦獲得重要代碼區(qū)的鎖,其他線程就要等到該鎖被釋放后才能使用該代碼區(qū)。v (2) C#中的中的Lock關(guān)鍵字關(guān)鍵字uC#中使用Lock關(guān)鍵字同樣可以獲得一個(gè)Monitor鎖。只需要簡(jiǎn)單地用Lock語(yǔ)句將需要同步的代碼括起來(lái),括號(hào)表示受保護(hù)代碼的起始點(diǎn)和終止點(diǎn)。v 操作演示:實(shí)例操作演示:實(shí)例9-4v 詳細(xì)代碼:見教材詳細(xì)代碼:見教材2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工
21、程建設(shè)項(xiàng)目Email:LFQ第18頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v (1) Interlocked類類:v 用于同步多個(gè)線程對(duì)共享變量的訪問(wèn),可創(chuàng)建較高級(jí)別的用于同步多個(gè)線程對(duì)共享變量的訪問(wèn),可創(chuàng)建較高級(jí)別的同步機(jī)制。同步機(jī)制。其其成員方法成員方法包括包括CompareExchange、Decrement、 Exchange和和Increment等。等。v (2) Mutex類類v 提供了跨進(jìn)程或線程的同步。類似于提供了跨進(jìn)程或線程的同步。類似于Monitor類。它只向類。它只向一個(gè)線程授予對(duì)共享資源的獨(dú)占訪問(wèn)權(quán)。如果一個(gè)線程獲一個(gè)線程授予對(duì)共享資源的獨(dú)占訪問(wèn)權(quán)。如果一
22、個(gè)線程獲取了取了Mutex對(duì)象,其他想要獲取該對(duì)象,其他想要獲取該對(duì)象對(duì)象的線程就會(huì)被掛起的線程就會(huì)被掛起,直到第一個(gè)線程釋放該,直到第一個(gè)線程釋放該Mutex對(duì)象。對(duì)象。v (3) ReaderWriterLock類類v 提供單個(gè)進(jìn)程寫和多個(gè)進(jìn)程讀的控制機(jī)制。當(dāng)請(qǐng)求寫線程提供單個(gè)進(jìn)程寫和多個(gè)進(jìn)程讀的控制機(jī)制。當(dāng)請(qǐng)求寫線程鎖后,在寫線程取得訪問(wèn)權(quán)之前,不會(huì)接受任何新的讀線鎖后,在寫線程取得訪問(wèn)權(quán)之前,不會(huì)接受任何新的讀線程,從而實(shí)現(xiàn)多個(gè)線程在任何時(shí)刻執(zhí)行讀方法,或允許單程,從而實(shí)現(xiàn)多個(gè)線程在任何時(shí)刻執(zhí)行讀方法,或允許單個(gè)線程在任何時(shí)刻執(zhí)行寫方法。個(gè)線程在任何時(shí)刻執(zhí)行寫方法。2012年年2月月2
23、9日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第19頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v【實(shí)例【實(shí)例9-5】使用】使用ReaderWriterLock,模擬,模擬對(duì)某一資源的單寫多讀對(duì)某一資源的單寫多讀。v詳細(xì)代碼:詳細(xì)代碼:u見教材2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建
24、設(shè)項(xiàng)目Email:LFQ第20頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v9.4.1 線程池管理線程池管理v9.4.2 ThreadPool類類2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第21頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v 線程池管理是指在多線程應(yīng)用程序的初始化過(guò)程中創(chuàng)建線線程池管理是指在多線程應(yīng)用程序的初始化過(guò)程中創(chuàng)建線程的集合。線程池中的每個(gè)線程都分派了一個(gè)任務(wù),當(dāng)完程的集合。線
25、程池中的每個(gè)線程都分派了一個(gè)任務(wù),當(dāng)完成任務(wù)時(shí),該線程就返回線程池中等待下一次分派。成任務(wù)時(shí),該線程就返回線程池中等待下一次分派。v (1) 普通線程管理普通線程管理v 服務(wù)器先創(chuàng)建服務(wù)器先創(chuàng)建10個(gè)新線程來(lái)響應(yīng)客戶請(qǐng)求,然后在整個(gè)生個(gè)新線程來(lái)響應(yīng)客戶請(qǐng)求,然后在整個(gè)生存期內(nèi)管理它們。在某個(gè)運(yùn)行時(shí)刻,系統(tǒng)可能會(huì)耗盡所有存期內(nèi)管理它們。在某個(gè)運(yùn)行時(shí)刻,系統(tǒng)可能會(huì)耗盡所有資源。資源。v (2) 線程池管理線程池管理v 服務(wù)器首先在線程池中創(chuàng)建服務(wù)器首先在線程池中創(chuàng)建1個(gè)新線程用于等待,每當(dāng)客個(gè)新線程用于等待,每當(dāng)客戶發(fā)出請(qǐng)求時(shí),服務(wù)器直接將線程池中等待的線程分派給戶發(fā)出請(qǐng)求時(shí),服務(wù)器直接將線程池中
26、等待的線程分派給該客戶,而無(wú)需為再創(chuàng)建線程而耗費(fèi)時(shí)間。同時(shí),服務(wù)器該客戶,而無(wú)需為再創(chuàng)建線程而耗費(fèi)時(shí)間。同時(shí),服務(wù)器還可管理線程池中的線程數(shù),如果太忙,還可以拒絕客戶還可管理線程池中的線程數(shù),如果太忙,還可以拒絕客戶請(qǐng)求。請(qǐng)求。2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第22頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材vThreadPool類,用于創(chuàng)建和使用線程池。創(chuàng)類,用于創(chuàng)建和使用線程池。創(chuàng)建和使用線程池的
27、方法是:調(diào)用建和使用線程池的方法是:調(diào)用ThreadPool類的類的QueueUserWorkItem方法,并傳遞一方法,并傳遞一個(gè)個(gè)WaitCallback的委托,在其中封裝要添加的委托,在其中封裝要添加到隊(duì)列中的方法到隊(duì)列中的方法。v操作演示:操作演示: 【實(shí)例【實(shí)例9-6】v詳細(xì)代碼:見教材詳細(xì)代碼:見教材v運(yùn)行效果:運(yùn)行效果:2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第23頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)
28、合打造精品教材v9.5.1 異步編程和多線程異步編程和多線程v9.5.2 異步編程模式異步編程模式2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第24頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v 傳統(tǒng)程序在調(diào)用一個(gè)方法時(shí),需要等待傳統(tǒng)程序在調(diào)用一個(gè)方法時(shí),需要等待該方法該方法執(zhí)行完成并返執(zhí)行完成并返回再繼續(xù)執(zhí)行后回再繼續(xù)執(zhí)行后續(xù)續(xù)的語(yǔ)句,但如果的語(yǔ)句,但如果被被調(diào)用的方法需要執(zhí)行較調(diào)用的方法需要執(zhí)行較長(zhǎng)的時(shí)間,程
29、序?qū)㈤L(zhǎng)時(shí)間的等待。如果希望在該方法沒(méi)有執(zhí)長(zhǎng)的時(shí)間,程序?qū)㈤L(zhǎng)時(shí)間的等待。如果希望在該方法沒(méi)有執(zhí)行完成行完成就就繼續(xù)執(zhí)行其它代碼。這就需要異步編程。異步編程繼續(xù)執(zhí)行其它代碼。這就需要異步編程。異步編程的基本思想是:向其它組件發(fā)出方法調(diào)用,并繼續(xù)執(zhí)行其它的基本思想是:向其它組件發(fā)出方法調(diào)用,并繼續(xù)執(zhí)行其它任務(wù),而不用等待調(diào)用的操作完成。任務(wù),而不用等待調(diào)用的操作完成。v 與與多線程編程多線程編程不同的是不同的是,異步編程異步編程不需要?jiǎng)?chuàng)建不需要?jiǎng)?chuàng)建和管理和管理線程,線程,只需在主線程中發(fā)出一個(gè)異步調(diào)用,而不需要等待異步調(diào)用只需在主線程中發(fā)出一個(gè)異步調(diào)用,而不需要等待異步調(diào)用返回即可繼續(xù)執(zhí)行其它操作。
30、如果需要返回異步調(diào)用結(jié)果,返回即可繼續(xù)執(zhí)行其它操作。如果需要返回異步調(diào)用結(jié)果,則通過(guò)回調(diào)、輪詢等方式來(lái)獲得。則通過(guò)回調(diào)、輪詢等方式來(lái)獲得。v 因?yàn)楫惒秸{(diào)用由主線程發(fā)起,且獨(dú)立于主線程之外單獨(dú)執(zhí)行因?yàn)楫惒秸{(diào)用由主線程發(fā)起,且獨(dú)立于主線程之外單獨(dú)執(zhí)行,不但達(dá)到了多線程的效果,而且還避免了多線程的同步問(wèn),不但達(dá)到了多線程的效果,而且還避免了多線程的同步問(wèn)題。因此,使用異步編程來(lái)執(zhí)行多個(gè)任務(wù)要更簡(jiǎn)便些。題。因此,使用異步編程來(lái)執(zhí)行多個(gè)任務(wù)要更簡(jiǎn)便些。2012年年2月月29日日10時(shí)時(shí)35分分Visual C#.NET程序設(shè)計(jì)教程(第程序設(shè)計(jì)教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目四川省高等教育質(zhì)量工程建設(shè)項(xiàng)目Email:LFQ第25頁(yè)人民郵電出版社與電子科技大學(xué)成都學(xué)院聯(lián)合打造精品教材v 異步編程一般分有兩個(gè)邏輯部份:客戶端調(diào)用開始方法并異步編程一般分有兩個(gè)邏輯部份:客戶端調(diào)用開始方法并提供參數(shù),從而啟動(dòng)異步操作;客戶端通過(guò)調(diào)用結(jié)束方法提供參數(shù),從而啟動(dòng)異步操作;客戶端通過(guò)調(diào)用結(jié)束方法,來(lái)獲取異步操作的結(jié)果,來(lái)獲取異步操作的結(jié)果。v 1開始異步操作開始異步操作:此時(shí),可通過(guò):此
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度密封膠產(chǎn)品環(huán)保標(biāo)準(zhǔn)制定與執(zhí)行合同3篇
- 2025年度智能溫室大棚設(shè)施買賣合同范本4篇
- 2025年度園林除草項(xiàng)目承包合同范本4篇
- 2025年度現(xiàn)代農(nóng)業(yè)示范園區(qū)開發(fā)承包經(jīng)營(yíng)合同范本3篇
- 2025年度智能穿戴設(shè)備開發(fā)框架授權(quán)許可合同3篇
- 2024面粉市場(chǎng)推廣與品牌代言合同3篇
- 2024版設(shè)備維修及日常保養(yǎng)合同合同一
- 2025年度床墊行業(yè)展會(huì)參展與合作協(xié)議3篇
- 2025年度玻璃行業(yè)研發(fā)成果轉(zhuǎn)化銷售合同3篇
- 2025年度新型城鎮(zhèn)化建設(shè)項(xiàng)目承包合同終止協(xié)議3篇
- 2025年湖北武漢工程大學(xué)招聘6人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 【數(shù) 學(xué)】2024-2025學(xué)年北師大版數(shù)學(xué)七年級(jí)上冊(cè)期末能力提升卷
- GB/T 26846-2024電動(dòng)自行車用電動(dòng)機(jī)和控制器的引出線及接插件
- 遼寧省沈陽(yáng)市皇姑區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末考試語(yǔ)文試題(含答案)
- 2024年國(guó)家工作人員學(xué)法用法考試題庫(kù)及參考答案
- 妊娠咳嗽的臨床特征
- 國(guó)家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 2024年金融理財(cái)-擔(dān)保公司考試近5年真題附答案
- 泰山產(chǎn)業(yè)領(lǐng)軍人才申報(bào)書
- 高中語(yǔ)文古代文學(xué)課件:先秦文學(xué)
評(píng)論
0/150
提交評(píng)論