首页 > 代码库 > 线程池 和 多线程执行时间比较
线程池 和 多线程执行时间比较
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace 线程池 { class Program { static void Main(string[] args) { //WaitCallback //线程池线程都是后台线程 //线程池的线程优势:线程可以进行重用,提高了线程的利用率 //线程池找一个空闲线程给我们执行这个任务,当任务完成后,线程不立即释放 //而是回到线程池,继续做其它的任务 //线程切换消耗资源,cpu再切换线程的时候,需要把当前线程执行的状态保持到寄存器中。 //线程创建非常消耗资源。线程创建非常满,占用大量的内存空间。每个线程最小1M内存开销。 //因为操作系统切换线程需要消耗大量的时间和资源,所以不一定线程越多执行效率越高 //线程池中的最大线程书:1024 默认1000个 //最小的线程数:4,默认是4个(根据cpu不同而不同) //1核心:255个线程,4*255=1000 ThreadPool.QueueUserWorkItem((s) => { Console.WriteLine(s); }, "jj"); #region 比较线程和线程池的速度 Stopwatch sp = new Stopwatch(); sp.Start(); for (int i = 0; i < 100;i++ ) { new Thread(() => { int mm = i * 2 + 2 - 3 * 3; }); } sp.Stop(); Console.WriteLine("一百个线程花费的毫秒数:"+sp.Elapsed.TotalMilliseconds); sp.Restart(); for (int j = 0; j < 100;j++ ) { ThreadPool.QueueUserWorkItem((s) => { int nn = j * 2 + 2 - 3 * 3; }); } sp.Stop(); Console.WriteLine("线程池花费的毫秒数:"+sp.Elapsed.TotalMilliseconds); #endregion Console.ReadKey(); } } }
线程池 和 多线程执行时间比较
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。