創(chuàng)建多線程程序PPT學(xué)習(xí)教案_第1頁
創(chuàng)建多線程程序PPT學(xué)習(xí)教案_第2頁
創(chuàng)建多線程程序PPT學(xué)習(xí)教案_第3頁
創(chuàng)建多線程程序PPT學(xué)習(xí)教案_第4頁
創(chuàng)建多線程程序PPT學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、會計學(xué)1創(chuàng)建多線程程序創(chuàng)建多線程程序2第1頁/共47頁3同時執(zhí)行所有任務(wù),時間更少,效率更高在同一時間點執(zhí)行各項進(jìn)程 編譯程序 發(fā)送/接收郵件 打印文件 其他操作系統(tǒng)允許計算機(jī)同時執(zhí)行多項操作程序(進(jìn)程)第2頁/共47頁4程序 1 程序 2線程 1線程 2線程 3線程 1線程 2線程 3單獨的執(zhí)行路徑第3頁/共47頁5n進(jìn)程是程序的一次執(zhí)行進(jìn)程是程序的一次執(zhí)行n一個或多個線程構(gòu)成一個進(jìn)程一個或多個線程構(gòu)成一個進(jìn)程進(jìn)程進(jìn)程線程第4頁/共47頁6在以下情況中可能要使用到多線程: l程序需要同時執(zhí)行兩個或多個任務(wù)l程序要等待某事件的發(fā)生,例如用戶輸入、文件操作、網(wǎng)絡(luò)操作、搜索等l后臺程序第5頁/共4

2、7頁7第6頁/共47頁8第7頁/共47頁9第8頁/共47頁10第9頁/共47頁11被用來完成另一個任務(wù)。第10頁/共47頁12第11頁/共47頁13第12頁/共47頁14引用System.Threading 命名空間Thread 線程實例名 = new Thread(new ThreadStart(方法名);只創(chuàng)建但不啟動線程只創(chuàng)建但不啟動線程線程實例名.Start();啟動線程啟動線程第13頁/共47頁15第14頁/共47頁16第15頁/共47頁17第16頁/共47頁18public static void Main() ThreadStart ChildRef = new ThreadSt

3、art(ChildThreadCall); Console.WriteLine(Main - Creating Child Thread); Thread ChildThread = new Thread(ChildRef); ChildThread.Start(); Console.WriteLine(Main - Sleeping for 2 seconds); Thread.Sleep(2000); Console.WriteLine(n Main - Aborting child thread); ChildThread.Abort(); Console.ReadLine(); 第17

4、頁/共47頁19第18頁/共47頁20第19頁/共47頁21第20頁/共47頁22Start()StartedWork CompletedStopped線程生命周期線程生命周期第21頁/共47頁23第22頁/共47頁24Start()StartedSuspend()SuspendedResume()線程生命周期線程生命周期第23頁/共47頁25Start()StartedSleep()Wait/JoinSleepInterrupt()Time Expires線程生命周期線程生命周期第24頁/共47頁26第25頁/共47頁27Start()StartedAbort()Stop RequestTh

5、read Responds to Stop RequestStopped線程生命周期線程生命周期第26頁/共47頁28該女士在同時吃蘋果、看書該女士在同時吃蘋果、看書并在電腦上工作。并在電腦上工作。第27頁/共47頁29第28頁/共47頁30public static void Main() ThreadStart Child1 = new ThreadStart(ChildThread1); ThreadStart Child2 = new ThreadStart(ChildThread2); Console.WriteLine(Main - Creating Child Threads);

6、 Thread Thread1 = new Thread(Child1); Thread Thread2 = new Thread(Child2); Thread1.Start(); Thread2.Start(); 第29頁/共47頁31第30頁/共47頁32n如果C#遇到了另一個優(yōu)先級更高的線程,當(dāng)前線程被推后;高優(yōu)先級的程序被執(zhí)行。第31頁/共47頁33第32頁/共47頁34第33頁/共47頁35CLR把所有處于執(zhí)行狀態(tài)把所有處于執(zhí)行狀態(tài)(runnable)的線程,按照優(yōu)先級的不同分別放置在不同的池中。當(dāng)一個阻塞的線程變?yōu)榈木€程,按照優(yōu)先級的不同分別放置在不同的池中。當(dāng)一個阻塞的線程變?yōu)?/p>

7、runnable狀態(tài)時,它被放置到相應(yīng)的池中。具有最高優(yōu)先級的非空線程池中的線程被賦予狀態(tài)時,它被放置到相應(yīng)的池中。具有最高優(yōu)先級的非空線程池中的線程被賦予CPU時間。時間。BlockedRunnableRunningunblockedBlock eventSchedulerStart()run() completesNew第34頁/共47頁36第35頁/共47頁37第36頁/共47頁38第37頁/共47頁39第38頁/共47頁40第39頁/共47頁41第40頁/共47頁42using System;using System.Threading;public class BookShop pu

8、blic int num = 1;/共享資源共享資源 public void Sale() int tmp; lock (this) /同步控制同步控制 tmp = num; if (tmp 0) /賣書過程賣書過程 Thread.Sleep(1000); num = num - 1; Console.WriteLine(售出一本售出一本); else Console.WriteLine(沒有了沒有了); public class MyClasspublic class MyClass public static void Main() public static void Main() BookShop a = new BookShop(); BookShop a = new BookShop(); Thread t1 = new Thread(new Thread t1 = new Thread(new ThreadStart(aThreadStart(a.Sale); Sale); Thread t2 = new Thread(new Thread t2 = new Thread(new ThreadStart(aThreadStart(a.Sale); Sale); t1

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論