[C#][.NET]執行緒池

執行緒池

執行緒池

.NET執行緒池,是指由CLR管理的執行緒池,當一個執行緒被使用完畢後並不會立刻銷毀,所以在執行緒池當中會存在一些沒有被銷毀的執行緒,而當應用程式需要一個新的執行緒時,就可以從執行緒池中直接獲取一個已經存在的執行緒。

.NET執行緒池你可以控制執行緒池的大小,但是沒辦法控制執行緒池何時開始執行工作。  並且執行緒池所有執行緒,都是屬於後台執行緒。

 

ThreadPool

使用執行緒池的方法相當簡單,如下

public class ThreadPoolDemo
{
    public void Run() 
    { 
        string message = "Some Message";
        bool result = System.Threading.ThreadPool.QueueUserWorkItem(Work, message);

        // 如果執行緒分配成功 result = true
        if (result)
        {
            Console.WriteLine("執行緒分配成功,按Enter可結束主執行緒,接著背景執行緒會被關閉");
        }
        else
        {
            // 分配執行緒失敗
        }

        Console.Read();
    }

    private void Work(object data)
    {
        for (int i = 0; i < 100; i++)
        {
            Console.WriteLine("背景執行緒工作執行中: {0}", data.ToString());
            Thread.Sleep(1000);
        }
    }
}

使用執行緒池沒辦法知道工作什麼時候結束,而且也沒辦法有回傳值。  因此執行緒池比較適合用在一些簡單沒有回傳值的操作。

 

 

一天一分享,身體好健康。

該追究的不是過去的原因,而是現在的目的。