我刚刚实现了一个如此处所述的线程池
非常简单的实现,工作正常,但我的应用程序不再关闭。似乎有两个工作线程(和另一个线程,我猜是排队线程)卡在函数中
ntdll.ZwRemoveIoCompletion
我记得在 QueueUserWorkItem(线程池实现中使用的 WinAPI 函数)的帮助条目中读过一些关于 IO 完成的内容,但我无法正确理解。我将 WT_EXECUTELONGFUNCTION 用于我的工作线程,因为执行可能需要一段时间,我希望创建一个新的工作线程而不是等待现有的工作线程完成。分配给工作线程的一些任务执行一些 I/O 工作。我尝试使用 WT_EXECUTEINIOTHREAD 但它似乎没有帮助。
我应该提到,主线程等待进入关键部分,调用堆栈为
System.Halt0, System.FinalizeUnits, Classes.Finalization, TThread.Destroy,
RtlEnterCriticalSection, RtlpWaitForCriticalSection
有什么想法我在这里做错了吗?提前感谢您的帮助。