💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
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 -> 操作系统默认) ~~~ **关闭线程池** * * * * * > 在规定时间内关闭线程池组件,如果工作线程在最大等待时间内未能正常关闭,会尝试强制关闭,这种情况下很可能会造成系统资源泄漏。 ~~~ BOOL Stop(dwMaxWait = INFINITE) dwMaxWait 最大等待时间(毫秒,默认:INFINITE,一直等待) ~~~ **提交任务** ~~~ BOOL Sbumit(fnTaskProc, pvArg, dwMaxWait = INFINITE) fnTaskProc 任务处理函数 pvArg 任务参数 dwMaxWait 任务提交最大等待时间(仅对TRP_WAIT_FOR类型线程池生效,默认:INFINITE,一直等待)。 ** SYS_GetLastError() 错误码ERROR_DESTINATION_ELEMENT_FULL表示任务队列已满。 ~~~ **提交Socket任务** ~~~ BOOL Sbumit(pTask, dwMaxWait = INFINITE) pTask 任务参数 dwMaxWait 任务提交最大等待时间(仅对TRP_WAIT_FOR类型线程池生效,默认:INFINITE,一直等待) ** SYS_GetLastError() 错误码ERROR_DESTINATION_ELEMENT_FULL表示任务队列已满。 ~~~ **动态调整线程池大小** ~~~ BOOL AdjustThreadCount(dwNewThreadCount) dwNewThreadCount 线程数量 >0 :dwNewThreadCount =0 :(CPU核数 * 2 + 2) <0 :(CPU核数 * (-dwNewThreadCount)) ~~~