|
hpsocket线程池组件接口
HP-Socket v5.4.x 版本开始,提供线程池组件 IHPThreadPool,协助用户实现通信逻辑与
业务逻辑分离,提高应用程序的整体执行效率。IHPThreadPool 提供以下主要操作方法。这
些方法成功返回 TRUE,失败返回 FALSE,失败可通过 SYS_GetLastError() 获取系统错误代
码。
启动线程池
BOOL Start(dwThreadCount = 0, dwMaxQueueSize = 0, enRejectedPolicy =
TRP_CALL_FAIL, dwStackSize = 0)
✓ dwThreadCount 线程数量,(默认:0)
>0 :dwThreadCount
=0 :(CPU 核数 * 2 + 2)
<0 :(CPU 核数 * (-dwThreadCount))
✓ dwMaxQueueSize 任务队列最大容量(默认:0,不限制)
✓ enRejectedPolicy 任务拒绝处理策略
TRP_CALL_FAIL :(默认)立刻返回失败
TRP_WAIT_FOR :等待(直到成功、超时或线程池关闭等原因导致失败)
TRP_CALLER_RUN :调用者线程直接执行
✓ dwStackSize 线程堆栈空间大小(默认:0 -> 操作系统默认)
关闭线程池
在规定时间内关闭线程池组件,如果工作线程在最大等待时间内未能正常关闭,会尝试
强制关闭,这种情况下很可能会造成系统资源泄漏。IHPThreadPool
+Start()
+Stop()
+Wait()
+Submit()
+Submit()
+AdjustThreadCount()
+HasStarted()
+GetState()
+GetQueueSize()
+GetTaskCount()
+GetThreadCount()
+GetMaxQueueSize()
+GetRejectedPolicy()
<<destroy>>+IHPThreadPool()
BOOL Stop(dwMaxWait = INFINITE)
✓ dwMaxWait 最大等待时间(毫秒,默认:INFINITE,一直等待)
提交任务
BOOL Submit(fnTaskProc, pvArg, dwMaxWait = INFINITE)
✓ fnTaskProc 任务处理函数
✓ pvArg 任务参数
✓ dwMaxWait 任务提交最大等待时间(毫秒,仅对 TRP_WAIT_FOR 类型线程
池生效,默认:INFINITE,一直等待)。
** SYS_GetLastError() 错误码 ERROR_DESTINATION_ELEMENT_FULL 表示
任务队列已满。
提交 Socket 任务
BOOL Submit(pTask, dwMaxWait = INFINITE)
✓ pTask 任务参数
✓ dwMaxWait 任务提交最大等待时间(毫秒,仅对 TRP_WAIT_FOR 类型线程
池生效,默认:INFINITE,一直等待)
** SYS_GetLastError() 错误码 ERROR_DESTINATION_ELEMENT_FULL 表示
任务队列已满。
注意:pTask 由 HP_Create_SocketTaskObj( )函数创建,当 Submit(pTask)提交成功
时 线 程 池 负 责 自 动 销 毁 pTask 对 象 ; 当 提 交 失 败 时 应 用 程 序 需 要 手 工 调 用
HP_Destroy_SocketTaskObj( )销毁 pTask 对象。
动态调整线程池大小
BOOL AdjustThreadCount(dwNewThreadCount)
✓ dwNewThreadCount 线程数量
>0 :dwNewThreadCount
=0 :(CPU 核数 * 2 + 2)
<0 :(CPU 核数 * (-dwNewThreadCount))
|
|