欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#多線程ThreadPool線程池詳解

 更新時間:2021年07月11日 12:10:59   作者:linYongJie  
這篇文章主要為大家詳細(xì)介紹了C#多線程ThreadPool線程池的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

簡單說明一下:

線程池可以看做容納線程的容器;一個應(yīng)用程序最多只能有一個線程池;ThreadPool靜態(tài)類通過QueueUserWorkItem()方法將工作函數(shù)排入線程池; 每排入一個工作函數(shù),就相當(dāng)于請求創(chuàng)建一個線程;

線程池的作用:

1、線程池是為突然大量爆發(fā)的線程設(shè)計的,通過有限的幾個固定線程為大量的操作服務(wù),減少了創(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[]; //傳過來的參數(shù)值
   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);
  }
 }
}

上述代碼運行結(jié)果:

使用例子二:

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);
  }
 }
}

上述代碼運行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論