




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C#程序設(shè)計
第8章
多線程2多線程同步★L(fēng)ockMonitorMutex同步事件線程池3本章目標(biāo)了解線程的基本操作及概念掌握如何創(chuàng)建線程掌握如何暫停和恢復(fù)線程的執(zhí)行掌握如何休眠線程掌握如何終止線程的執(zhí)行掌握線程同步處理4一、線程安全線程安全:指在多個線程并發(fā)使用某個對象時,該對象成員總是保持有效狀態(tài)。常常表現(xiàn)為競爭資源和死鎖現(xiàn)象。競爭資源:兩個或多個線程同時訪問同一數(shù)據(jù)或資源時會導(dǎo)致不符合要求或無法預(yù)期的結(jié)果。死鎖:多個線程彼此等待對方釋放其所占用的資源,最終導(dǎo)致線程的阻塞。5線程同步當(dāng)多個線程可以調(diào)用單個對象的屬性和方法時,一個線程可能會中斷另一個線程正在執(zhí)行的任務(wù),使該對象處于一種無效狀態(tài)。因此必須針對這些調(diào)用進行同步處理使用lock語句同步代碼塊使用監(jiān)視器同步代碼塊6線程同步LockLock關(guān)鍵字將語句塊標(biāo)記為臨界區(qū),方法是獲取給定對象的互斥鎖,執(zhí)行語句,然后釋放該鎖。//定義鎖或監(jiān)視對象Objectobj=newobject();Lock(obj){
同步代碼}各線程所共有的,一般為全局變量或類的成員7線程同步MonitorEnter(Object)在指定對象上獲取排他鎖Exit(Object)釋放指定對象上的排他鎖
try{
Monitor.Enter
(
obj
);dosomething();}finally{
Monitor.Exit(
obj
);}對象或表達式8使用Mutex同步代碼塊Mutex:創(chuàng)建一個新的互斥對象,該對象在任一時刻只能被一個線程所擁有。Pulse或PulseAll通知等待中的線程Mutexmtx=newMutex();//創(chuàng)建一個互斥對象mtx.WaitOne();//請求互斥對象的所有權(quán):成功為true,否則為falsemtx.ReleaseMutex
(
);
//釋放對象可以設(shè)置等待時間:WaitOne(100,true)9案例publicvoidM1(){ Console.WriteLine("媽媽開始做飯!");Thread.Sleep(1000);Console.WriteLine("媽媽做好飯了,媽媽喊張三回家吃飯");}publicvoidM2(){ Console.WriteLine("張三開始吃飯");
}ThreadTesttt=newThreadTest();Threadt1=newThread
(tt.M1);Threadt2=newThread
(tt.M2);t1.Start();
t2.Start();10案例flag=false;publicvoidM1(){
if(flag==false){ Console.WriteLine("媽媽開始做飯!");Thread.Sleep(1000);Console.WriteLine("媽媽做好飯了,媽媽喊張三回家吃飯");
flag=true;}}publicvoidM2(){
if(flag==true){ Console.WriteLine("張三開始吃飯");}
}ThreadTesttt=newThreadTest();Threadt1=newThread
(tt.M1);Threadt2=newThread
(tt.M2);t1.Start();
t2.Start();11同步事件和等待句柄同步事件允許線程通過發(fā)信號互相通信,從而實現(xiàn)線程需要獨占訪問的資源的同步處理控制ManualResetEvent(手動重置的本地事件)ManualResetEventmre=newManualResetEvent(f/t);f:無信號;t:有信號mre.Set();//設(shè)置mre對象為有信號狀態(tài)mre.Reset();//設(shè)置mre對象為無信號狀態(tài)mre.WaitOne(
)//等待信號放在需要鎖定的代碼前ManualResetEvent只能給一個線程加鎖,倘若為多個線程加鎖可以借助多個對象12案例classThreadTest1{ManualResetEventmre=newManualResetEvent(false);publicvoidM1(){Console.WriteLine("媽媽開始做飯!");Thread.Sleep(1000);Console.WriteLine("媽媽做好飯了,媽媽喊張三回家吃飯");Thread.Sleep(1000);mre.Set();}publicvoidM2(){mre.WaitOne();Console.WriteLine("張三開始吃飯");}}13同步事件和等待句柄同步事件允許線程通過發(fā)信號互相通信,從而實現(xiàn)線程需要獨占訪問的資源的同步處理控制AutoResetEvent(自動同步事件)AutoResetEventare=newManualResetEvent(f/t);f:無信號;t:有信號are.Set();//設(shè)置mre對象為有信號狀態(tài)are.Reset();//設(shè)置mre對象為無信號狀態(tài)are.WaitOne(
)//等待信號放在需要鎖定的代碼前AutoResetEvent用于鎖定多個線程14同步事件classThreadTest3{AutoResetEventar=newAutoResetEvent(false);publicvoidM1(){ar.Reset();Console.WriteLine("媽媽開始做飯!");Thread.Sleep(1000);Console.WriteLine("媽媽做好飯了");ar.Set();}publicvoidM3(){ar.Reset();Console.WriteLine("爸爸開始做菜!");Thread.Sleep(1000);Console.WriteLine("爸爸做好菜了");Thread.Sleep(1000);ar.Set();}publicvoidM2(){ar.WaitOne();ar.WaitOne();Console.WriteLine("張三開始吃飯");}}15線程池線程池:是可以用來在后臺執(zhí)行多個任務(wù)的集合。方法說明GetAvailableThreads返回線程池中當(dāng)前可用線程數(shù)GetMaxThreads返回最大線程數(shù),當(dāng)任務(wù)數(shù)大于該值時,任務(wù)將排隊QueueUserWorkItem將方法排隊等待執(zhí)行,方法在有空閑線程時執(zhí)行SetMaxThreads設(shè)置最大線程數(shù)RegisterWaitForSingleObject注冊一個委托等待WaitHandle16案例利用線程池創(chuàng)建線程,完成1~40間所有偶數(shù)的輸出。1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)推拿期末試題及答案
- 云南省隴川縣民族中學(xué)2025屆數(shù)學(xué)高二下期末綜合測試試題含解析
- 浙江省亳州市2024-2025學(xué)年物理高二下期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 云南省瀘水市第一中學(xué)2024-2025學(xué)年物理高二下期末檢測模擬試題含解析
- 中衛(wèi)市第一中學(xué)2025年物理高二下期末預(yù)測試題含解析
- 鹽城市阜寧縣高一上學(xué)期期中考試化學(xué)試題
- 特色飲品店品牌授權(quán)與接手合同范本
- 彩票店合作伙伴雇傭與市場拓展合同
- 交通運輸基礎(chǔ)設(shè)施建設(shè)采購戰(zhàn)略合同
- 公寓式酒店管理租賃合同協(xié)議
- 家具供貨結(jié)算協(xié)議書
- 2025年公證員資格考試全國范圍真題及答案
- 游客自愿離團協(xié)議書
- 2024-2025學(xué)年滬教版(五四學(xué)制)七年級英語下學(xué)期考點突破:書面表達15篇(含答案)
- 小區(qū)中控室面試題及答案
- 選擇性必修1 《當(dāng)代國際政治與經(jīng)濟》(主觀題答題模版)
- 量子光子ics在生物醫(yī)學(xué)中的應(yīng)用-全面剖析
- 2025年度手術(shù)室感染控制工作計劃
- 國開《離散數(shù)學(xué)》大作業(yè)及答案
- 離婚協(xié)議書 標(biāo)準(zhǔn)版電子版(2025年版)
- 城市地理學(xué)知到智慧樹章節(jié)測試課后答案2024年秋華中師范大學(xué)
評論
0/150
提交評論