C#多線程之線程池(ThreadPool)
一、簡介
前面介紹了平時用到的大多數(shù)的多線程的例子,但在實際開發(fā)中使用的線程往往是大量的和更為復(fù)雜的,這時,每次都創(chuàng)建線程、啟動線程。從性能上來講,這樣做并不理想(因為每使用一個線程就要創(chuàng)建一個,需要占用系統(tǒng)開銷);從操作上來講,每次都要啟動,比較麻煩。為此引入的線程池的概念。
好處:
- 1.減少在創(chuàng)建和銷毀線程上所花的時間以及系統(tǒng)資源的開銷
- 2.如不使用線程池,有可能造成系統(tǒng)創(chuàng)建大量線程而導(dǎo)致消耗完系統(tǒng)內(nèi)存以及”過度切換”。
在什么情況下使用線程池?
- 1.單個任務(wù)處理的時間比較短
- 2.需要處理的任務(wù)的數(shù)量大
線程池最多管理線程數(shù)量=“處理器數(shù) * 250”。也就是說,如果您的機器為2個2核CPU,那么CLR線程池的容量默認上限便是1000。通過線程池創(chuàng)建的線程默認為后臺線程,優(yōu)先級默認為Normal。
二、代碼
案例一:
class Program { static void Main(string[] args) { ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadMethod1), new object()); //參數(shù)可選 Console.ReadKey(); } public static void ThreadMethod1(object val) { for (int i = 0; i <= 10000; i++) { if (i % 1000 == 0) { if (string.IsNullOrEmpty(Thread.CurrentThread.Name) ) { Thread.CurrentThread.Name = "Thred_" + i; } Console.WriteLine("循環(huán){0}次的線程的線程名稱為:{1}",i,Thread.CurrentThread.Name); } } } }
運行結(jié)果:
案例二:
class Program { public static void Main() { // Queue the task. ThreadPool.QueueUserWorkItem(ThreadProc); Console.WriteLine("Main thread does some work, then sleeps."); Thread.Sleep(1000); Console.WriteLine("Main thread exits."); Console.ReadKey(); } // This thread procedure performs the task. static void ThreadProc(Object stateInfo) { // No state object was passed to QueueUserWorkItem, so stateInfo is null. Console.WriteLine("Hello from the thread pool."); } }
運行結(jié)果:
到此這篇關(guān)于C#多線程之線程池(ThreadPool)的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#調(diào)用SQL?Server中有參數(shù)的存儲過程
這篇文章介紹了C#調(diào)用SQL?Server中有參數(shù)存儲過程的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03C#提取網(wǎng)頁中超鏈接link和text部分的方法
這篇文章主要介紹了C#提取網(wǎng)頁中超鏈接link和text部分的方法,涉及C#正則表達式及字符串操作相關(guān)技巧,需要的朋友可以參考下2016-02-02C#/VB.NET實現(xiàn)將XML轉(zhuǎn)為PDF
可擴展標記語言(XML)文件是一種標準的文本文件,它使用特定的標記來描述文檔的結(jié)構(gòu)以及其他特性。本文將利用C#實現(xiàn)XML文件轉(zhuǎn)PDF?,需要的可以參考一下2022-03-03WinForm中DefWndProc、WndProc與IMessageFilter的區(qū)別
這篇文章主要介紹了WinForm中DefWndProc、WndProc與IMessageFilter的區(qū)別,較為詳細的分析了WinForm的消息處理機制,需要的朋友可以參考下2014-08-08unity AudioSource播放完聲音后要執(zhí)行的函數(shù)或條件操作
這篇文章主要介紹了unity AudioSource播放完聲音后要執(zhí)行的函數(shù)或條件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04