我在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
排队工作?
答案 0 :(得分:5)
ThreadPool 不是长时间运行操作的候选者,或者是您希望显式控制线程的实例。
此外,您应该考虑重构您的函数以允许使用中止标志正常退出,而不是强行终止该线程。
答案 1 :(得分:0)
不要使用Thread-Poll。而是使用后台线程,并使用另一个线程进行监控。只需创建线程,让操作系统担心多核处理器或任何处理器类型。