我在 Win32 nt5 环境中编程。
我有一个将被多次调用的函数。每个调用都是原子的。我想使用 QueueUserWorkItem
来利用多核处理器。
我遇到的问题是我只想给函数 3 秒来完成。如果它在 3 秒内没有完成,我想终止线程。
目前我正在做这样的事情:
HANDLE newThreadFuncCall= CreateThread(NULL,0,funcCall,&func_params,0,NULL);
DWORD result = WaitForSingleObject(newThreadFuncCall, 3000);
if(result == WAIT_TIMEOUT)
{
TerminateThread(newThreadFuncCall,WAIT_TIMEOUT);
}
我只是生成一个线程并等待 3 秒或它完成。无论如何做一些类似于但使用 QueueUserWorkItem
来排队工作的事情?
最佳答案
ThreadPool 不是长时间运行的操作或您想要显式控制线程的实例。
此外,您应该考虑重构您的函数,以允许使用中止标志正常退出,而不是强行终止线程。
关于c++ - 终止使用 QueueUserWorkItem(win 32/nt5) 创建的线程池中长时间运行的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2755920/