zoukankan      html  css  js  c++  java
  • 使用ThreadPool代替Thread

    线程的空间开销

    1. 线程内核对象。包含上下文信息。32位系统占用700字节
    2. 线程环境块。包括线程的异常处理链。32位系统占用4KB
    3. 用户模式栈。保存方法的参数、局部变量和返回值
    4. 内核模式栈。调用操作系统的内核模式函数时,系统会将函数参数从用户模式栈复制到内核模式栈。32位系统占用12KB

    线程的时间开销

    1. 创建时,系统相继初始化上述内存空间
    2. CLR加载DLL到DLLMain方法,并传送连接标志
    3. 线程上下文切换
      1. 进入内核模式
      2. 将上下文信息保存到正在执行的线程内核对象上
      3. 系统获取一个Spinlock,并确定下一个要执行的线程。释放Spinlock。如果下一个线程不在同一个进程,则需要进行虚拟地址交换
      4. 从将被执行的线程内核对象上载入上下文信息
      5. 离开内核模式

    使用线程池,CLR不会销毁这个线程,而是会保留这个线程一段时间。

    using System;
    using System.Diagnostics;
    using System.Threading;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var p = new Program();
                Stopwatch sw = new Stopwatch();
                sw.Start();
                p.Thread();
                sw.Stop();
                Console.WriteLine(sw.ElapsedTicks);
                sw.Restart();
                p.Pool();
                sw.Stop();
                Console.WriteLine(sw.ElapsedTicks);
                Console.ReadKey();            
            }
    
            void Thread()
            {
                for (int i = 0; i < 10; i++)
                {
                    var worker = new Thread(() =>
                    {
                        //Console.WriteLine("Thread Do");
                    });
                    worker.Start();
                }
            }
    
            void Pool()
            {
                for (int i = 0; i < 10; i++)
                {
                    ThreadPool.QueueUserWorkItem(state =>
                    {
                        //Console.WriteLine("Pool Do");
                    });
                }
            }
        }
    }
  • 相关阅读:
    ie标题修改
    求两个数的商在单元格内设置公示显示#ERROR
    明细报表汇总使用说明
    学习了GDI+ 做了个简单的折线图。
    C#读写文本文件,字符串截取
    C#winform去除btn按钮的边框
    观江南大学设计学院2011届迎新晚会有感
    c++的一个程序源码记录
    c#中委托的概念一个总结demo
    《平凡的世界》中田晓霞和孙少平的爱情
  • 原文地址:https://www.cnblogs.com/goodspeed/p/4068725.html
Copyright © 2011-2022 走看看