iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C# ThreadPool之QueueUserWorkItem使用案例详解
  • 469
分享到

C# ThreadPool之QueueUserWorkItem使用案例详解

2024-04-02 19:04:59 469人浏览 泡泡鱼
摘要

先看代码: //设置可以同时处于活动状态的线程池的请求数目。 bool pool = ThreadPool.SetMaxThreads(8, 8); if (pool) {

先看代码:


//设置可以同时处于活动状态的线程池的请求数目。 
bool pool = ThreadPool.SetMaxThreads(8, 8);
if (pool) {
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数1"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数2"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数3"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数4"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数5"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数6"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数7"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数8"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数9"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数10"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数11"));
};

上面代码先设置线程池中最大并发量为8个,然后通过QueueUserWorkItem向线程池中添加11个方法,运行,输出结果:

可以看出,先运行了8个,当有一个任务结束后线程池中有空闲线程时,排队的下一个任务才会执行,

把最大并发量改成9试试:


{
    //设置可以同时处于活动状态的线程池的请求数目。 
    bool pool = ThreadPool.SetMaxThreads(9, 9);
    if (pool) {
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数1"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数2"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数3"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数4"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数5"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数6"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数7"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数8"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数9"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数10"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数11"));
    };
}

运行结果:

果然没错,这次是先执行9个,当有空闲线程时再执行下一个

总结一下

QueueUserWorkItem:将方法排入队列以便执行。 此方法在有线程池线程变得可用时执行。

到此这篇关于C# ThreadPool之QueueUserWorkItem使用案例详解的文章就介绍到这了,更多相关C# ThreadPool之QueueUserWorkItem内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C# ThreadPool之QueueUserWorkItem使用案例详解

本文链接: https://www.lsjlt.com/news/133881.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C# ThreadPool之QueueUserWorkItem使用案例详解
    先看代码: //设置可以同时处于活动状态的线程池的请求数目。 bool pool = ThreadPool.SetMaxThreads(8, 8); if (pool) { ...
    99+
    2022-11-12
  • C# 总结QueueUserWorkItem传参几种方式案例详解
    最近在学习citrix的xenserver6.2的源代码,发现多处用到System.Threading命名空间下的ThreadPool.QueueUserWorkItem方法: ...
    99+
    2022-11-12
  • C# CultureInfo之常用InvariantCulture案例详解
    1、CultureInfo的InvariantCulture的作用 (1)、CultureInfo使整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文...
    99+
    2022-11-12
  • C++之&与*符号用法案例详解
    C++ 之 & 和 * 1.基本概念与二者区别 指针是一块内存的地址值,而引用是一块内存的别名。 从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它...
    99+
    2022-11-12
  • C# PropertyGrid使用案例详解
    1. 只有public的property能显示出来,可以通过BrowsableAttribute来控制是否显示,通过CategoryAttribute设置分类,通过Descripti...
    99+
    2022-11-12
  • C# AttributeUsage使用案例详解
    C# AttributeUsage的使用是如何的呢?首先让我们来了解一下什么是AttributeUsage类它是另外一个预定义特性类,AttributeUsage类的作用就是帮助我们...
    99+
    2022-11-12
  • C# log4net使用案例详解
    这边先介绍简单的使用:在控制台输出和写入文件 首先添加log4net的nuget包 然后在app.config中添加配置项==configSections只能有一个,且是config...
    99+
    2022-11-12
  • Java之Jackson使用案例详解
    序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取...
    99+
    2022-11-12
  • vue之keepAlive使用案例详解
    在开发中经常有从列表跳到详情页,然后返回详情页的时候需要缓存列表页的状态(比如滚动位置信息),这个时候就需要保存状态,要缓存状态;vue里提供了keep-alive组件用来缓存状态。...
    99+
    2022-11-12
  • C语言之system函数案例详解
    来看看在windows操作系统下system () 函数详解(主要是在C语言中的应用) 注意:在windows下的system函数中命令可以不区别大小写! 函数名: system...
    99+
    2022-11-12
  • C++ LARGE_INTEGER解析与使用案例详解
    这里解释前面碰到的LARGE_INTEGER结构。与可能的误解不同,64位数据并非要在64位操作系统下才能使用。在VC中,64位数据的类型为__int64。定义写法如下: ...
    99+
    2022-11-12
  • C语言之快速排序案例详解
    快速排序:是对冒泡排序算法的一种改进。 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据...
    99+
    2022-11-12
  • C++ cin.get用法案例详解
    与字符串输入一样,有时候使用 cin>> 读取字符也不会按我们想要的结果行事。 例如,因为它会忽略掉所有前导白色空格,所以使用 cin>> 就不可能仅输入一个...
    99+
    2022-11-12
  • C++ template用法案例详解
    有必要记一下这种一眼看上去就很高级的用法。还是编程不够多。都没用过这个。 相信用过c++的人,即便没用过,也肯定都听说过模板类这个词。嗨不巧了,今天讲的就是模板类。 模板是c++支持...
    99+
    2022-11-12
  • C# Console.WriteLine()用法案例详解
    以前用Console.WriteLine()的时候就只会用它直接输出string字符串,但后来发现它还有其它在有些场合下会十分方便的输出方法,这篇就记录一下这些方法的使用吧。 代码格...
    99+
    2022-11-12
  • C++ ostream用法案例详解
    概述 在 C++中,ostream表示输出流,英文”output stream“的简称。在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直...
    99+
    2022-11-12
  • C# Request.Form用法案例详解
    在CS文件中获得对应页面中的下拉框DropDownList_sitebranch值可以有以下几种方法获得: siteInfo.FZJGID = DropDownList_site...
    99+
    2022-11-12
  • C# DialogResult用法案例详解
    在程序中,经常会弹出一个对话框来让用户填写一些信息,填写完成后,当用户点击“确定”按钮后,在主窗体中进行其他的处理。比如一个简单的例子,在主窗体中有一个菜单,是“增加用户”,当点击这...
    99+
    2022-11-12
  • C# pictureBox用法案例详解
    PictureBox 控件可以显示来自位图、图标或者元文件,以及来自增强的元文件、JPEG 或 GIF 文件的图形。如果控件不足以显示整幅图象,则裁剪图象以适应控件的大小。 本文利用...
    99+
    2022-11-12
  • C++ GetDlgItem用法案例详解
    GetDlgItem的用法小结 GetDlgItem用于获得指定控件ID的窗体指针,函数原型如下: HWND GetDlgItem( HWND hDlg, int nI...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作