c# 多線程

來源:互聯網
上載者:User

標籤:

一、基本概念

1、進程:一個程式開始運行時,它就是一個進程。進程包括運行中的程式和程式所使用到的資源。而一個進程是由多個線程組成。

2、線程:線程是一個程式中的一個執行流,每個線程都有自己的專有寄存器(棧指標、程式寄存器等)。但是其程式碼區是共用的,即不同的線程可以執行同樣的函數。

3、多線程:指的是程式中包含多個執行流,即在一個程式中可以同時運行多個不同的線程來執行不同的任務。換句話說,就是允許單個程式創造出多個並存執行的線程來完成各自的任務。

4、任何程式在執行時,至少有一個主線程。

5、所有與多線程應用相關的類都放在system.threading命名空間中。

6、在thread類中包含以下幾個重要的方法:

 start():啟動線程;

sleep(int):靜態方法,暫停當前線程指定的毫秒數;

abort():終止一個線程;

suspend():掛起線程,以後還可以恢複;

resume():恢複被掛起的線程;

 

二、簡單線程的建立步驟

我們用一個簡單的控制台應用程式來作為示範,代碼如所示:

線程的入口是通過ThreadStart代理(delegate)來提供的,我們可以把ThreadStart理解為一個函數指標,指向線程所要執行的函數。當程式調用Thread.Start()方法後,線程就開始執行ThreadStart所代表或者說指向的函數。

三、線程的優先順序

當不同線程之間爭奪CPU資源時,CPU是按照線程的優先順序來給予服務的。在c#應用程式中,使用者可以為線程設定5個不同的優先順序層級,由高到低分別為:Highest,AboveNormal,Normal,BelowNormal,Lowest 。

在建立線程時如果不指定優先順序,那麼體統預設為ThreadPriority.Normal。

給一個線程指定優先順序,可以用如下代碼:

newthreading.Priority=ThreadPriority.Lowest; 

四、帶有參數的多線程

1、帶有一個參數的情況

利用Thread(ParameterizedThreadStart)初始化Thread類的新執行個體,指定允許對象線上程啟動時傳遞給線程的委託。

注意:ParameterizedThreadStart要求參數類型必須為object,所以在程式中所定義的方法的形參類型必須為object。

2、帶多個參數的情況

由於Thread預設只提供了ThreadStart和ParameterizedThreadStart兩種建構函式,所以如果需要傳遞多個參數,我們可以自己將參數作為類的屬性。定義類對象的時候執行個體化這個屬性,然後進行操作。

在上述程式中為了簡單我們只設定了一個屬性text。在實際操作中,如果想傳入多個參數,設定多個屬性即可。

 

c# 多線程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.