C#线程池
线程池的引用:
创建线程还是比较简单的,但是由于线程的创建和销毁需要耗费一定的开销(默认情况下,主线程占用1M,子线程占用512KB,线程越多,占用内存也越多),过多的使用线程反而会造成内存资源的浪费,从而影响性能,
出于对性能的考虑,于是引入了线程池的概念。
线程池是应用程序要创建线程来执行任务的时候,线程池才会初始化一个线程,
初始化的线程和其他线程一样,但是在线程完成任务之后不会自行销毁,
而是以挂起的状态回到线程池,当应用程序再次向线程池发出请求的时候,线程池里挂起的线程会再度激活执行任务。
这样做可以减少线程创建和销毁所带来的开销。
简单说:线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。
线程池非常适合大量小的运算。
当应用程序想要执行一个异步操作时,需要调用QueueUserWorkItem方法将对应的任务添加到线程池中。
线程池会从队列中提取任务, 并且将其委派给线程池中的线程执行。
使用线程池的方法:
ThreadPool.QueueUserWorkItem(CallBackWorkItem); //CallBackWorkItem 参数为线程池线程执行的回调方法 ThreadPool.QueueUserWorkItem(CallBackWorkItem, "abc"); //CallBackWorkItem 参数为线程池线程执行的回调方法 第二个参数表示传递给回调方法的参数 void CallBackWorkItem(object state) { Console.WriteLine("子线程执行"); if(state != null){ Console.WriteLine("使用这行语句调用了这个线程方法 : ThreadPool.QueueUserWorkItem(CallBackWorkItem, "abc")"); } else{ Console.WriteLine("使用这行语句调用了这个线程方法 : ThreadPool.QueueUserWorkItem(CallBackWorkItem)"); } } ———————————————— 版权声明:本文为CSDN博主「乌班图ysm」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u012278016/article/details/104893824
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。