一、CLR线程池管理2类线程
1、普通的工作线程
1)使用QueuUserWorkItem
2)ThreadPool.QueueUserWorkItem 方法
方法排入队列以便执行。此方法在有线程池线程变得可用时执行
QueueUserWorkItem(WaitCallback) 将方法排入队列以便执行。此方法在有线程池线程变得可用时执行。
QueueUserWorkItem(WaitCallback, Object) 将方法排入队列以便执行,并指定包含该方法所用数据的对象。此方法在有线程池线程变得可用时执行。
2、I/O完成
1)使用BindHandle
2)
a)这个方法过时,可使用b方法
操作系统句柄绑定到ThreadPool。
<ObsoleteAttribute("ThreadPool.BindHandle(IntPtr) has been deprecated. Please use ThreadPool.BindHandle(SafeHandle) instead.", _
False)> _
<SecurityPermissionAttribute(SecurityAction.Demand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
Public Shared Function BindHandle ( _
osHandle As IntPtr _
) As Boolean
参数
osHandle
类型:System.IntPtr
持有句柄的 IntPtr。 在非托管端必须为重叠 I/O 打开该句柄。
返回值
类型:System.Boolean
如果绑定了句柄,则为 true;否则为 false。
b)ThreadPool.BindHandle 方法 (SafeHandle)
将操作系统句柄绑定到 ThreadPool。
'声明
<SecurityPermissionAttribute(SecurityAction.Demand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
Public Shared Function BindHandle ( _
osHandle As SafeHandle _
) As Boolean
参数
osHandle
类型:System.Runtime.InteropServices.SafeHandle
保存操作系统句柄的 SafeHandle。 在非托管端必须为重叠 I/O 打开该句柄。
返回值
类型:System.Boolean
如果绑定了句柄,则为 true;否则为 false。
osHandle 参数应该为 SafeFileHandle,它派生自抽象类 SafeHandle。
二、线程池中的线程数量管理
1、ThreadPool.SetMaxThreads 方法
1)设置可以同时处于活动状态的线程池的请求数目。 所有大于此数目的请求将保持排队状态,直到线程池线程变为可用。
2)
声明
<SecurityPermissionAttribute(SecurityAction.Demand, ControlThread := True)> _
Public Shared Function SetMaxThreads ( _
workerThreads As Integer, _
completionPortThreads As Integer _
) As Boolean
参数
workerThreads
类型:System.Int32
线程池中辅助线程的最大数目。
completionPortThreads
类型:System.Int32
线程池中异步 I/O 线程的最大数目。
返回值
类型:System.Boolean
如果更改成功,则为 true;否则为 false。
2、其它方法
GetAvailableThreads检索由GetMaxThreads方法返回的最大线程池线程数和当前活动线程数之间的差值。GetMaxThreads检索可以同时处于活动状态的线程池请求的数目。所有大于此数目的请求将保持排队状态,直到线程池线程变为可用。GetMinThreads发出新的请求时,在切换到管理线程创建和销毁的算法之前检索线程池按需创建的线程的最小数量。
SetMaxThreads 设置可以同时处于活动状态的线程池的请求数目。 所有大于此数目的请求将保持排队状态,直到线程池线程变为可用。
SetMinThreads 发出新的请求时,在切换到管理线程创建和销毁的算法之前设置线程池按需创建的线程的最小数量。
分享到:
相关推荐
最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....
vb.net2010数据库编程基础教程-数据绑定,使用控件方式连接数据库,图文教程
VB.NET多线程编程技术--大量提高应用程序的性能[收集].pdf
VB.NET判断网络连接状态
VB.NET应用教程第2版-童爱红-数据包 书本内的全部代码!
用VB.NET写的小计算器,之前看到一个,不过发现那个BUG挺多的,就自己写了一个,呵呵,仅供参考。打开里面的Caculate.vbproj文件,即可看到源代码。
使用VB.NET对PLC进行读写数据,方便快捷,对入门者有很好的编程
第8章-VB.NET与数据库应用程序10-10-25
AUTOCAD VBA&VB.NET开发基础与实例教程 c#
VB.net设计模式高级编程这本书的源码,网上已经找不到,特发出来共享。
VB.NET实例解析应用编程 VB.NET实例解析应用编程 VB.NET实例解析应用编程
Developers guide to ASP.NET
AUTOCAD VBA&VB.NET开发基础与实例教程 c#
第二部分 vb.net的语法部分 第三部分 visual basic.net的运算 第四部分 visual basic.net的常用控件 第六部分 vb.net的OOP结构 第七部分 数据库访问技术 第八部分 vb.net的多线程 第九部分 vb.net的文件和出错处理
VB.NET之SerialPort编程实例源码 直接使用
vb.net控件应用编程实例教程vb.net控件应用编程实例教程vb.net控件应用编程实例教程
VB.NET高级篇教程
vb.net(2008) 写的Keyence Laser LK-G5000数据读取。
vb.net和sol server2000高级编程-创建高效数据层
VB.net上位机与三菱 FX3U-ENET-L(ADP)模块以太网MC协议通信源码及设置,以太网模块IP地址设为192.168.0.254,开启三菱编程软件上下载端口,VB.用MC ASCII协议读取D0-D5并显示出来