|
发表于 2024-2-21 18:02:03
|
显示全部楼层
河南省郑州市
.版本 2
.支持库 spec
.子程序 关闭, , 公开, 成功返回真,失败返回假。
.参数 等待时间, 整数型, 可空, 可空。默认为“5000”毫秒。等待线程池销毁的时间,单位毫秒,如果为INFINITE(-1),则仅在对象发出信号时返回。
.局部变量 i, 整数型
.如果真 (取反 (成员_线程池_状态))
返回 ()
.如果真结束
成员_线程池_状态 = 假
.计次循环首 (成员_线程数, )
PostQueuedCompletionStatus (成员_线程池IOCP, 0, -999, 0) ' 通知所有线程退出
处理事件 ()
延迟 (100)
.计次循环尾 ()
等待所有任务完成 (选择 (是否为空 (等待时间), 5000, 等待时间))
SetEvent (成员_任务完成事件)
.计次循环首 (取数组成员数 (成员_线程句柄), i)
.如果真 (WaitForSingleObject (成员_线程句柄 , 1) ≠ #WAIT_OBJECT_0)
.如果真 (成员_调试输出)
调试输出 (“强制销毁线程” + 到文本 (i))
.如果真结束
TerminateThread (成员_线程句柄 , 0)
.如果真结束
CloseHandle (成员_线程句柄 )
处理事件 ()
延迟 (100)
.计次循环尾 ()
清除数组 (成员_线程句柄)
成员_线程数 = 0
成员_任务数 = 0
成员_执行数 = 0
.如果真 (成员_调试输出)
调试输出 (“线程池已结束”)
.如果真结束
CloseHandle (成员_线程池IOCP)
|
|