最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)例代碼講解c# 線程(上)

 更新時(shí)間:2020年06月24日 16:49:37   作者:HueiFeng  
這篇文章主要介紹了講解c# 線程的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下

簡介

過去普通計(jì)算機(jī)只有計(jì)算單元,卻不能同時(shí)執(zhí)行多個(gè)任務(wù)。然而操作系統(tǒng)卻已經(jīng)可以同時(shí)運(yùn)行多個(gè)應(yīng)用程序,即實(shí)現(xiàn)了多任務(wù)的概念。為了防止一個(gè)應(yīng)用程序控制CPU而導(dǎo)致其他應(yīng)用程序和操作系統(tǒng)本身永遠(yuǎn)被掛起這一可能情況,操作系統(tǒng)不得不使用某種方式 將物理計(jì)算單元分割為一些虛擬的進(jìn)程,并給予每個(gè)程序一定量的計(jì)算能力。此外,操作系統(tǒng)必須始終能夠優(yōu)先訪問CPU,并能調(diào)整不同程序訪問CPU的優(yōu)先級(jí)。線程正是這一概念的實(shí)現(xiàn)??梢哉J(rèn)為線程是一個(gè)虛擬進(jìn)程,用于獨(dú)立運(yùn)行一個(gè)特定的程序。 (請記住線程會(huì)消耗大量的操作系統(tǒng)資源。多個(gè)線程共享一個(gè)物理處理器將導(dǎo)致操作系統(tǒng)忙于管理這些線程,而無法運(yùn)行程序。)

接下來創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序

class Program
   {
   static void Main(string[] args)
  {
   Thread t = new Thread(PrintNumbers);
   t.Start();
   PrintNumbers();
   Console.ReadKey();
  }
   static void PrintNumbers() {
   Console.WriteLine("Starting...");
   for (int i = 1; i < 10; i++)
   {
    Console.WriteLine(i);

   }
   }
}

結(jié)果兩組范圍為1到10的數(shù)字會(huì)隨機(jī)交叉輸出。這說明了printnumbers方法同時(shí)運(yùn)行在主線程和另一個(gè)線程中。

static void DoNothing() {
   Thread.Sleep(TimeSpan.FromSeconds(2));
  }
  static void PrintNumbersWithStatus()
  {
   Console.WriteLine("Starting...");
   Console.WriteLine(Thread.CurrentThread.ThreadState.ToString());
   for (int i = 1; i < 10; i++) {
   Thread.Sleep(TimeSpan.FromSeconds(2));
   Console.WriteLine(i);
   }
  }

在main方法中加入以下代碼片段

Console.WriteLine("Starting program...");
   Thread t = new Thread(PrintNumbersWithStatus);
   Thread t2 = new Thread(DoNothing);
   Console.WriteLine(t.ThreadState.ToString());
   t2.Start();
   t.Start();
   for (int i = 1; i < 30; i++) {
    Console.WriteLine(t.ThreadState.ToString());
   }
   Thread.Sleep(TimeSpan.FromSeconds(6));
   t.Abort();
   Console.WriteLine("A thread has been aborted");
   Console.WriteLine(t.ThreadState.ToString());
   Console.WriteLine(t2.ThreadState.ToString());

工作原理 當(dāng)主程序啟動(dòng)時(shí)定義了兩個(gè)不同的線程。一個(gè)將被終止,另一個(gè)則會(huì)成功完成運(yùn)行。線程狀態(tài)位于Thread對(duì)象的ThreadState屬性中。ThreadState屬性是一個(gè)C#枚舉對(duì)象。剛開始線程狀態(tài)為ThreadState.Unstarted。然后我們啟動(dòng)線程,并估計(jì)在一個(gè)周期30次迭代的區(qū)間中,線程狀態(tài)會(huì)從ThreadState.Running變?yōu)門hreadState.WaitSleepJoin。 如果實(shí)際情況與以上不符,請?jiān)黾拥螖?shù),終止第一個(gè)線程后,會(huì)看到現(xiàn)在該線程狀態(tài)為ThreadState.Aborted。程序也有可能會(huì)打印出ThreadState.AbortRequested狀態(tài)。這充分說明了同步兩個(gè)線程的復(fù)雜性。請記住不要在程序中使用線程終止。我在這里使用他只是為了展示相應(yīng)的線程狀態(tài)。最后可以看到第二個(gè)線程t2成功完成并且狀態(tài)為ThreadState.Stopped。另外還有一些其他的線程狀態(tài),但是要么已經(jīng)被棄用,要么沒有我們試驗(yàn)過的幾種狀態(tài)有用。

到此這篇關(guān)于實(shí)例代碼講解c# 線程(上)的文章就介紹到這了,更多相關(guān)c# 線程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#檢測是否有危險(xiǎn)字符的SQL字符串過濾方法

    C#檢測是否有危險(xiǎn)字符的SQL字符串過濾方法

    這篇文章主要介紹了C#檢測是否有危險(xiǎn)字符的SQL字符串過濾方法,功能非常實(shí)用,對(duì)于程序設(shè)計(jì)的安全來說至關(guān)重要!需要的朋友可以參考下
    2014-07-07
  • C#中的Task.WhenAll和Task.WhenAny方法介紹

    C#中的Task.WhenAll和Task.WhenAny方法介紹

    這篇文章介紹了C#中的Task.WhenAll和Task.WhenAny方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 關(guān)于C#.net winform程序驗(yàn)證moss的集成身份認(rèn)證實(shí)例

    關(guān)于C#.net winform程序驗(yàn)證moss的集成身份認(rèn)證實(shí)例

    因?yàn)榫W(wǎng)站使用的是windows集成認(rèn)證,所以遇到了權(quán)限問題,需要輸入密碼。使操作和用戶體驗(yàn)非常不方便,研究了好久沒有找到好的方法,最后終于讓我踏破鐵鞋總結(jié)出了下面的方法
    2013-03-03
  • C# 設(shè)計(jì)模式系列教程-原型模式

    C# 設(shè)計(jì)模式系列教程-原型模式

    原型模式隱藏了對(duì)象的創(chuàng)建細(xì)節(jié),對(duì)有些初始化需要占用很多資源的類來說,對(duì)性能也有很大提高。
    2016-06-06
  • C#中事件的繼承實(shí)例分析

    C#中事件的繼承實(shí)例分析

    這篇文章主要介紹了C#中事件的繼承,通過一個(gè)面向?qū)ο蟪绦驅(qū)嵗齺碚f明子類調(diào)用父類事件的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-08-08
  • C#和Java互相調(diào)用的方法小結(jié)

    C#和Java互相調(diào)用的方法小結(jié)

    這篇文章主要介紹了C#和Java互相調(diào)用的方法,文中展示了如何在不同編程語言之間實(shí)現(xiàn)互操作,每種語言之間的互操作都有其特定的方法和工具,希望這些示例能夠幫助你更好地理解和實(shí)現(xiàn)跨語言調(diào)用,需要的朋友可以參考下
    2025-04-04
  • vs 中C#項(xiàng)目讀取JSON配置文件的方法

    vs 中C#項(xiàng)目讀取JSON配置文件的方法

    這篇文章主要介紹了vs中 C#項(xiàng)目讀取JSON配置文件的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • C#微信開發(fā)之啟用開發(fā)者模式

    C#微信開發(fā)之啟用開發(fā)者模式

    本文主要介紹了C#微信開發(fā)中啟用開發(fā)者模式的步驟與方法,具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • C#微信開發(fā)之接收 / 返回文本消息

    C#微信開發(fā)之接收 / 返回文本消息

    本文主要介紹了C#微信開發(fā)之接收 / 返回文本消息原理與實(shí)現(xiàn)方法,具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • C#實(shí)現(xiàn)將網(wǎng)址生成二維碼圖片方法介紹

    C#實(shí)現(xiàn)將網(wǎng)址生成二維碼圖片方法介紹

    這篇文章介紹了C#實(shí)現(xiàn)將網(wǎng)址生成二維碼圖片的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論

乐都县| 渭南市| 建平县| 枣强县| 武城县| 宁国市| 镇安县| 岑溪市| 泉州市| 台东县| 贺州市| 阜南县| 石柱| 兴义市| 义马市| 海林市| 固阳县| 贵州省| 济源市| 塘沽区| 交口县| 庆安县| 东城区| 吉安市| 从化市| 山丹县| 延吉市| 湘潭市| 浦县| 襄城县| 博爱县| 山西省| 广宁县| 康乐县| 启东市| 始兴县| 池州市| 古丈县| 木兰县| 垣曲县| 北海市|