程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#多線程進修之(一)多線程的相干概念剖析

C#多線程進修之(一)多線程的相干概念剖析

編輯:C#入門知識

C#多線程進修之(一)多線程的相干概念剖析。本站提示廣大學習愛好者:(C#多線程進修之(一)多線程的相干概念剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#多線程進修之(一)多線程的相干概念剖析正文


本文具體剖析了C#多線程進修之多線程的相干概念。分享給年夜家供年夜家參考。詳細剖析以下:

甚麼是過程?

當一個法式開端運轉時,它就是一個過程,過程包含運轉中的法式和法式所應用到的內存和體系資本。
而一個過程又是由多個線程所構成的。

甚麼是線程?

線程是法式中的一個履行流,每一個線程都有本身的專有存放器(棧指針、法式計數器等),但代碼區是同享的,即分歧的線程可以履行異樣的函數。

甚麼是多線程?

多線程是指法式中包括多個履行流,即在一個法式中可以同時運轉多個分歧的線程來履行分歧的義務,也就是說許可單個法式創立多個並行履行的線程來完成各自的義務。

多線程的利益:

可以進步CPU的應用率。在多線程法式中,一個線程必需期待的時刻,CPU可以運轉其它的線程而不是期待,如許就年夜年夜進步了法式的效力。

多線程的晦氣方面:

線程也是法式,所以線程須要占用內存,線程越多占用內存也越多;
多線程須要調和和治理,所以須要CPU時光跟蹤線程;
線程之間對同享資本的拜訪會互相影響,必需處理競用同享資本的成績;
線程太多會招致掌握太龐雜,終究能夠形成許多Bug;

接上去將對C#編程中的多線程機制停止商量。為了省去創立GUI那些繁瑣的步調,更清楚地切近親近線程的實質,接上去的一切法式都是掌握台法式,法式最初的Console.ReadLine()是為了使法式半途停上去,以便看清晰履行進程中的輸入。

任何法式在履行時,至多有一個主線程。

一個直不雅印象的線程示例:
//SystemThread.cs
using System;
using System.Threading;
namespace ThreadTest
{
  class RunIt
  {
    [STAThread]
    static void Main(string[] args)
    {
      Thread.CurrentThread.Name="System Thread";
      //給以後線程起名為"System Thread"
      Console.WriteLine(Thread.CurrentThread.Name+"'Status:"+Thread.CurrentThread.ThreadState);
      Console.ReadLine();
    }
  }
}

輸入以下:
System Thread's Status:Running

在這裡,我們經由過程Thread類的靜態屬性CurrentThread獲得了以後履行的線程,對其Name屬性賦值“System Thread”,最初還輸入了它確當前狀況(ThreadState)。

所謂靜態屬性,就是這個類一切對象所私有的屬性,不論你創立了若干個這個類的實例,然則類的靜態屬性在內存中只要一個。很輕易懂得CurrentThread為何是靜態的——固然有多個線程同時存在,然則在某一個時辰,CPU只能履行個中一個。

在法式的頭部,我們應用了以下定名空間:

using System;
using System.Threading;

在.net framework class library中,一切與多線程機制運用相干的類都是放在System.Threading定名空間中的。假如你想在你的運用法式中應用多線程,就必需包括這個類。

我們經由過程個中供給的Thread類來創立和掌握線程,ThreadPool類用於治理線程池等。
(另外還供給處理了線程履行支配,逝世鎖,線程間通信等現實成績的機制。)

Thread類有幾個相當主要的辦法,描寫以下:

Start():啟動線程;
Sleep(int):靜態辦法,暫就緒前哨程指定的毫秒數;
Abort():平日應用該辦法來終止一個線程;
Suspend():該辦法其實不終止未完成的線程,它僅僅掛起線程,今後還可恢復;
Resume():恢復被Suspend()辦法掛起的線程的履行;

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved