• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#异步编程の----Threadpool(线程池)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

简介:

一个托管线程的创建需要数千个CPU周期,并且当发生线程切换时也会带来明显的开销。考虑线程的重用,避免不断重复创建新的线程是提高系统效率的一种方式。

线程池是一种提供效率的方式,它创建好一些线程由线程池引擎管理,开发者将需要处理的业务或操作封装成为【工作项】工作项被传递给线程池队列,由线程池中的不同的工作线程挑选并执行。当执行完毕后,线程并不被销毁,而是继续选择其他的工作项。

试想一下,如果有大量的任务需要处理,例如网站后台对于HTTP请求的处理,那是不是要对每一个请求创建一个后台线程呢?显然不合适,这会占用大量内存,而且频繁地创建的过程也会严重影响速度,那怎么办呢?线程池就是为了解决这一问题,把创建的线程存起来,形成一个线程池(里面有多个线程),当要处理任务时,若线程池中有空闲线程(前一个任务执行完成后,线程不会被回收,会被设置为空闲状态),则直接调用线程池中的线程执行(例asp.net处理机制中的Application对象),

下面看个简单的例子:

namespace WpfApplication6
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ConsoleManager.Show();//打开控制台窗口  
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                ThreadPool.QueueUserWorkItem(m =>
                {
                    Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString());
                });
            }
            Console.Read();
        }
    }
}

  结果为:

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++编译发现errorC2146:syntaxerror:missing';'beforeidentifier'm_ctrlserver'发布时间:2022-07-18
下一篇:
C#LINQ查询之对象发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap