C# 線程總結

來源:互聯網
上載者:User

線程處理概念:

線程:線程(thread),有時被稱為輕量級進程(Lightweight Process,LWP),是程式執行流的最小單元。一個標準的線程由線程ID,當前指令指標(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨立調度和指派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共用進程所擁有的全部資源。一個線程可以建立和撤消另一個線程,同一進程中的多個線程之間可以並發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。

線程是程式中一個單一的順序控制流程程。在單個程式中同時運行多個線程完成不同的工作,稱為多線程。

線程作業中的收穫:

一、事件

  1. 事件的定義和使用:

a.發布事件類別:首先定義一個委託,再次定義一個事件

例如:public void delegate RunHandel(eventags e)

            Pulic event RunHandel runHandelEvent

事件觸發程式中:

If(runHandelEvent!=null)

{        

    RunHandelEvent(參數);

}

b.事件訂閱類: 執行個體化一個事件發行者類

class a=new class();

  1. RunHandelEvent+=new a. runHandel(事件處理方法);
  2. 事件觸發程式:
    1. run();就ok
  3. 事件可以自訂事件參數,傳遞值

事件的用處:

  1. 可以用來傳遞值。
  2. 動態添加方法,在合適的地方觸發該方法。
  3. 利用事件進行線程同步,如作業中所述。
  4. 一個事件可以由多個使用者訂閱,發行者決定什麼時候觸發事件,訂閱者決定怎麼處理事件。
  5. 還可以利用線程進行非同步委託調用。

二、線程:

1.線程:任何線程都會有一個主線程。

2.線程時程式中的一個執行流,意味著不同的線程可以執行同一個函數。

3.線程重要的方法:

4.IsBackGround是否為後台線程,後台線程主線程完了後,不會讓線程繼續運行。

方法

操作

Start

使線程開始運行。

Sleep

使線程暫停指定的一段時間。

Suspend

線上程到達安全點時,使其暫停。

Abort

線上程到達安全點時,使其停止。

Resume

重新啟動掛起的線程

Join

使當前線程一直等到另一線程完成。 在與逾時值一起使用時,如果該線程在分配的時間內完成,此方法將返回 True。

  1. 線程式控制制,保持資料的一致性:

Lock鎖機制:

Lock(expression) 
this:代表一個類的執行個體(保護簡單的執行個體)

                類名:保護靜態變數。

Monitor類鎖定一個對象:提供線程共用資源的方案。

典型的生產者和消費者問題:

在同一個類中有兩個不同的方法,針對的是操作同一變數,為類保持資料的一致性,我們使用monitor類來同步兩個線程和通訊。

Monitor.Waite()是當前線程進入等待狀態。

Monitor.pulse():通知另一線程進入。

Monitor.Enter():Enter
方法允許一個且僅一個線程繼續執行後面的語句;

  1. 線程池:是一種多執行緒形式,處理過程中將任務添加到隊列,然後在建立線程後自動啟動這些任務
  2. 線程池的一個優點是可以通過一個狀態物件將參數傳遞到任務過程

兩個重要的訊號類:

ManulResetEvent:一個訊號類,使用set方法通知主線程事件完成

AutoRestEvent:也是訊號類,通知主線程事件完成

WaiHandle.waitAll(訊號類數組)等待所有的的線程完成後啟用主線程。

ThreadPool.QueueUserWorkItem(new
waitCallBack(委託方法),new object資訊類)。

在處理方法中這個參數也必須是object類型。

子線程處理類中的訊號類,需要與主線程的訊號使用的是同一訊號類的引用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.