• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    細說多線程(一)—— 線程的定義

    發布時間:  2012/9/16 6:31:57

    引言

    本文主要從線程的基礎用法,CLR線程池當中工作者線程與I/O線程的開發,并行操作PLINQ等多個方面介紹多線程的開發。
    其中委托的BeginInvoke方法以及回調函數最為常用。
    而 I/O線程可能容易遭到大家的忽略,其實在開發多線程系統,更應該多留意I/O線程的操作。特別是在ASP.NET開發當中,可能更多人只會留意在客戶端 使用Ajax或者在服務器端使用UpdatePanel。其實合理使用I/O線程在通訊項目或文件下載時,能盡可能地減少IIS的壓力。
    并行編程是Framework4.0中極力推廣的異步操作方式,更值得更深入地學習。
    希望本篇文章能對各位的學習研究有所幫助,當中有所錯漏的地方敬請點評。

    目錄

    一、線程的定義

    二、線程的基礎知識

    三、以ThreadStart方式實現多線程

    四、CLR線程池的工作者線程

    五、CLR線程池的I/O線程

    六、異步 SqlCommand

    七、并行編程與PLINQ

    八、計時器與鎖

     

    一、線程的定義

     1. 1 進程、應用程序域與線程的關系

    進程(Process)是Windows系統中的一個基本概念,它包含著一個運行程序所需要的資源。進程之間是相對獨立的,一個進程無法訪問另一個 進程的數據(除非利用分布式計算方式),一個進程運行的失敗也不會影響其他進程的運行,Windows系統就是利用進程把工作劃分為多個獨立的區域的。進 程可以理解為一個程序的基本邊界。

    應用程序域(AppDomain)是一個程序運行的邏輯區域,它可以視為一個輕量級的進程,.NET的程序集正是在應用程序域中運行的,一個進程可 以包含有多個應用程序域,一個應用程序域也可以包含多個程序集。在一個應用程序域中包含了一個或多個上下文context,使用上下文CLR就能夠把某些 特殊對象的狀態放置在不同容器當中。

    線程(Thread)是進程中的基本執行單元,在進程入口執行的第一個線程被視為這個進程的主線程。在.NET應用程序中,都是以Main()方法 作為入口的,當調用此方法時系統就會自動創建一個主線程。線程主要是由CPU寄存器、調用棧和線程本地存儲器(Thread Local Storage,TLS)組成的。CPU寄存器主要記錄當前所執行線程的狀態,調用棧主要用于維護線程所調用到的內存與數據,TLS主要用于存放線程的狀 態信息。

    進程、應用程序域、線程的關系如下圖,一個進程內可以包括多個應用程序域,也有包括多個線程,線程也可以穿梭于多個應用程序域當中。但在同一個時刻,線程只會處于一個應用程序域內。

     
    由于本文是以介紹多線程技術為主題,對進程、應用程序域的介紹就到此為止。關于進程、線程、應用程序域的技術,在“C#綜合揭秘——細說進程、應用程序域與上下文”會有詳細介紹。

     

    1.2 多線程

    在單CPU系統的一個單位時間(time slice)內,CPU只能運行單個線程,運行順序取決于線程的優先級別。如果在單位時間內線程未能完成執行,系統就會把線程的狀態信息保存到線程的本地 存儲器(TLS) 中,以便下次執行時恢復執行。而多線程只是系統帶來的一個假像,它在多個單位時間內進行多個線程的切換。因為切換頻密而且單位時間非常短暫,所以多線程可 被視作同時運行。

    適當使用多線程能提高系統的性能,比如:在系統請求大容量的數據時使用多線程,把數據輸出工作交給異步線程,使主線程保持其穩定性去處理其他問題。但需要注意一點,因為CPU需要花費不少的時間在線程的切換上,所以過多地使用多線程反而會導致性能的下降。
     

    億恩-天使(QQ:530997) 電話 037160135991 服務器租用,托管歡迎咨詢。


    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      1
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線