• Asp.net 使用线程池实例


    实际开发经常会使用线程,如果每次使用都是创建线程、启动线程,然后销毁线程,从性能上来讲,非常占用系统开销,当线程达到一定量的时候会影响程序的运行和处理效率。

    使用线程池:
    好处:
    线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务;减少在创建和销毁线程上所花的时间以及系统资源的开销;线程池不仅能够保证内核的充分利用,还能防止过分调度。

    缺点:
    线程池中的线程不能手动开始,取消,我们只是把函数(方法)排入线程池,剩下的都是系统自动完成,所以相对线程有更多操作,就不适合用线程池。

    实例:

    class Program
        {
            internal delegate void MyAsyncFun(string i);
    
            static void Main(string[] args)
            {
                var str = "This is params";//可以将对象序列化后作为参数
                //启动线程
                ThreadPool.QueueUserWorkItem(PostAsync, str);
    
                Console.ReadKey();
            }
    
            private static void PostAsync(object obj)
            {
                MyAsyncFun caller = MyAsyncFunDetail;
                caller.BeginInvoke(obj.ToString(), MyCallBack, caller);
            }
    
            private static void MyCallBack(IAsyncResult ar)
            {
                var caller = (MyAsyncFun)ar.AsyncState;
                caller.EndInvoke(ar);
            }
    
            //具体处理方法
            private static void MyAsyncFunDetail(string str)
            {
                Console.Write(str + Thread.CurrentThread.Name);
            }
        }

    实际项目中,再需要的地方执行 ThreadPool.QueueUserWorkItem(PostAsync, str)  即可执行一个线程处理自己的逻辑。

  • 相关阅读:
    【硬件】PCB设计步骤
    【modbus】modbus协议入门讲解
    【I2C】上拉电阻的选择
    【运放】失调电压、偏置电流
    【硬件】模拟地和数字地的隔离
    【电力】电流互感器和电压互感器
    【电力】为什么高电压传输时线路损耗小
    【办公】pdf转ppt的方法
    【EMC】电压暂降、短时中断和电压变化
    js 下的 split
  • 原文地址:https://www.cnblogs.com/qk2014/p/10333427.html
Copyright © 2020-2023  润新知