我在Win32 nt5环境中编程。终止使用QueueUserWorkItem创建的线程池中的长时间运行线程(win 32/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
排队工作?