C#多線程ThreadPool線程池詳解
簡單說明一下:
線程池可以看做容納線程的容器;一個應用程序最多只能有一個線程池;ThreadPool靜態(tài)類通過QueueUserWorkItem()方法將工作函數排入線程池; 每排入一個工作函數,就相當于請求創(chuàng)建一個線程;
線程池的作用:
1、線程池是為突然大量爆發(fā)的線程設計的,通過有限的幾個固定線程為大量的操作服務,減少了創(chuàng)建和銷毀線程所需的時間,從而提高效率。
2、如果一個線程的時間非常長,就沒必要用線程池了(不是不能作長時間操作,而是不宜。),況且我們還不能控制線程池中線程的開始、掛起、和中止。
一些使用例子:
實例一:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ThreadPoolDemo { class Program { static void Main(string[] args) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(TestThreadPool),new string[] {"drsw","sfs","sdfs"}); Console.ReadKey(); } public static void TestThreadPool(object state) { string[] arry = state as string[]; //傳過來的參數值 int workerThreads = 0; int completionPortThreads = 0; System.Threading.ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads); Console.Write(DateTime.Now.ToString() + "--" + arry[0] + "----workerThreads=" + workerThreads + "----completionPortThreads=" + completionPortThreads); } } }
上述代碼運行結果:
使用例子二:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ThreadPoolDemo { class Program { static void Main(string[] args) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(TestThreadPool)); Console.ReadKey(); } public static void TestThreadPool(object state) { int workerThreads = 0; int completionPortThreads = 0; System.Threading.ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads); Console.Write(DateTime.Now.ToString() + "----workerThreads=" + workerThreads + "----completionPortThreads=" + completionPortThreads); } } }
上述代碼運行結果:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C# Winform中DataGridView導出為Excel的實現示例
本文主要介紹了C# Winform中DataGridView導出為Excel的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05C#使用FtpWebRequest與FtpWebResponse完成FTP操作
這篇文章介紹了C#使用FtpWebRequest與FtpWebResponse完成FTP操作的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05C#使用Directoryinfo類獲得目錄信息和屬性的方法
這篇文章主要介紹了C#使用Directoryinfo類獲得目錄信息和屬性的方法,涉及C#操作目錄的技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04c#用Treeview實現FolderBrowerDialog 和動態(tài)獲取系統(tǒng)圖標(運用了Win32 
其實,FolderBrowerDialog 很好用呢,有木有啊親,反正我特別的喜歡,微軟大哥把這個瀏覽文件夾的東東封裝的多好呀2013-03-03C#使用委托(delegate)實現在兩個form之間傳遞數據的方法
這篇文章主要介紹了C#使用委托(delegate)實現在兩個form之間傳遞數據的方法,涉及C#委托的使用技巧,需要的朋友可以參考下2015-04-04