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

 

posted @ 2021-09-18 15:35  ProZkb  阅读(1417)  评论(0编辑  收藏  举报