C#线程池ThreadPool
线程池可以减少频繁的线程创建和销毁对系统性能的影响。
ThreadPool默认是后台属性,IsBackground是true。
线程池通过线程命名空间的ThreedPool类来实现,要请求由线程池中的一个线程来处理你的任务,需要调用QueueUserWorkItem方法。
要注意,当你向线程池提交一个人物请求后,你就无法再取消它了。另外,线程池中每个线程按照默认的优先级进行。
向线程池提交任务使用WaitCallback委托。线程池会对这个任务自动调用一个线程来处理。
public delegate void WaitCallback(object state);
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ThreadPoolTest { class Program { static void Main(string[] args) { int newThreads; int nCompletionPortThreads; ThreadPool.SetMaxThreads(10, 200); //设置线程池的大小 //获取辅助线程数目和异步IO线程数据 ThreadPool.GetMaxThreads(out newThreads, out nCompletionPortThreads); Console.WriteLine("辅助线程数目{0},异步IO线程数目{1}", newThreads, nCompletionPortThreads); for (int i = 0; i < 5; i++) { ThreadPool.QueueUserWorkItem(JobForAThread); } Thread.Sleep(3000); Console.ReadKey(); } static void JobForAThread(object state) { for (int i = 0; i < 3; i++) { Console.WriteLine("循环第{0}次,当前运行的线程ID是{1}", i, Thread.CurrentThread.ManagedThreadId); Thread.Sleep(50); } } } }
文章对您有帮助,开心可以打赏我,金额随意,欢迎来赏!
需要电子方面开发板/传感器/模块等硬件可以到我的淘宝店逛逛