一、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 发出新的请求时,在切换到管理线程创建和销毁的算法之前设置线程池按需创建的线程的最小数量。
分享到:
相关推荐
1. **ConvertVB6toVB7.zip**:这个项目可能是关于将VB6代码转换为VB.NET的示例。VB6和VB.NET虽然在语法上有许多相似之处,但VB.NET引入了许多新的特性和框架,如.NET Framework,使得代码的迁移和升级成为了一个重要...
- VB.NET:另一种.NET语言,语法与Visual Basic类似,但完全基于.NET框架。 - F#:函数式编程语言,也可在.NET框架上运行。 3. **ASP.NET** - ASP.NET是.NET框架的一部分,用于构建Web应用程序。主要版本有ASP...
2. VB.NET:另一种流行的.NET语言,语法与VB6类似,但支持.NET框架的所有功能。 3. F#:函数式编程语言,也可用于.NET开发,适合处理数据科学和并行计算任务。 三、ASP.NET 1. ASP.NET Web Forms:基于控件的模型,...
它包含一组全面的开发工具和库,支持多种编程语言,如C#、VB.NET、F#等。面试中,针对.NET的技术考察通常涵盖以下几个关键领域: 1. **基础概念**:了解.NET框架的基本构成,如CLR(Common Language Runtime)——...
这个框架包含了大量的类库,支持多种编程语言,如C#、VB.NET、C++/CLI等,使得开发者能够高效地创建从简单的桌面应用到复杂的分布式系统。 标题中的“NET Framework 高级编程”意味着我们将探讨.NET Framework中更...