`
deepfuture
  • 浏览: 4333609 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79428
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68376
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101498
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281206
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14608
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65559
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31320
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45206
社区版块
存档分类
最新评论

VB.NET并行与分布式编程(7)-线程池[1]

 
阅读更多

一、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  发出新的请求时,在切换到管理线程创建和销毁的算法之前设置线程池按需创建的线程的最小数量。 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics