程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#線程系列講座(3):線程池和文件下載服務器(1)

C#線程系列講座(3):線程池和文件下載服務器(1)

編輯:關於C語言

如果設計一個服務器程序,每當處理用戶請求時,都開始一個線程,將會在一 定程序上消耗服務器的資源。為此,一個最好的解決方法就是在服務器啟動之前 ,事先創建一些線程對象,然後,當處理客戶端請求時,就從這些建好的線程中 獲得線程對象,並處理請求。保存這些線程對象的結構就叫做線程池。

在C#中可以通過System.Threading.ThreadPool類來實現,在默認情況下, ThreadPool最大可建立500個工作線程和1000個I/O線程(根據機器CPU個數和.Net framework版本的不同,這些數據可能會有變化)。下面是一個用C#從線程池獲得 線程的例子:

private static void execute(object state)
{
Console.WriteLine(state);
}
static void Main(string[] args)
{

int workerThreads;
int completionPortThreads;
ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);
Console.WriteLine(workerThreads);
Console.WriteLine(completionPortThreads);
ThreadPool.QueueUserWorkItem(execute,"線程1"); // 從線程池中得到一個線程,並運行execute
ThreadPool.QueueUserWorkItem(execute, "線程2");
ThreadPool.QueueUserWorkItem(execute, "線程3");
Console.ReadLine();
}

下圖為上面代 碼的運行結果。

要注意的是,使用ThreadPool獲得的線程都是後台線程。

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