2013/11/25

C#.Net ThreadPool

ThreadPool提供執行緒的集區,可用來執行工作、公佈工作項目、處理非同步的 I/O、代表其他執行緒等候,以及處理計時器。



using System;
using System.Threading;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            //ThreadPool.SetMinThreads(2, 0);
            int workerThreads, completionPortThreads;
            ThreadPool.GetMinThreads(out workerThreads, out completionPortThreads);
            Console.WriteLine(workerThreads + ", " + completionPortThreads + "\n");


            for (int i = 0; i <= 2; i++)
                ThreadPool.QueueUserWorkItem(new WaitCallback(WorkA), i + 1);

            Console.ReadKey();
        }

        static void WorkA(Object obj)
        {
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("執行緒{0}:", obj);
                Thread.Sleep(100);
            }
        }


    }
}




ThreadPool.QueueUserWorkItem:可以將工作加入佇列裡面,等執行緒去處理
ThreadPool.SetMinThreads:可以設定最少的執行緒數量


設定『最少執行緒數量前』



設定『最少執行緒數量後』




參考資料:
http://msdn.microsoft.com/zh-tw/library/system.threading.threadpool(v=vs.110).aspx
http://msdn.microsoft.com/zh-tw/library/kbf0f1ct(v=vs.110).aspx
http://msdn.microsoft.com/zh-tw/library/system.threading.threadpool.setminthreads(v=vs.110).aspx
http://msdn.microsoft.com/en-us/library/vstudio/h4732ks0.aspx
http://www.dotblogs.com.tw/atowngit/archive/2009/12/20/12557.aspx
http://www.cnblogs.com/luminji/archive/2011/05/13/2044801.html
http://columns.chicken-house.net/post/ThreadPool-e5afa6e4bd9c-2-e7a88be5bc8fe7a2bc-(C).aspx
http://hillstone.blog.hexun.com.tw/53765753_d.html