最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#多線程之線程池(ThreadPool)

 更新時間:2022年04月20日 10:01:22   作者:農(nóng)碼一生  
這篇文章介紹了C#多線程之線程池(ThreadPool)的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、簡介

前面介紹了平時用到的大多數(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線程池的容量默認(rèn)上限便是1000。通過線程池創(chuàng)建的線程默認(rèn)為后臺線程,優(yōu)先級默認(rèn)為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)文章

最新評論

安国市| 道孚县| 宣威市| 东宁县| 定安县| 上犹县| 基隆市| 广汉市| 蓝山县| 望谟县| 远安县| 寿宁县| 抚顺市| 赞皇县| 边坝县| 万山特区| 阳原县| 泗阳县| 元氏县| 尼勒克县| 秀山| 辽源市| 弥勒县| 平原县| 大同县| 察隅县| 商城县| 阜阳市| 霸州市| 称多县| 垫江县| 安福县| 宣化县| 郧西县| 崇信县| 云阳县| 肃南| 开远市| 绥宁县| 同仁县| 商河县|