在使用QueueUserWorkItem(win 32/nt5)创建的线程池中终止长时间运行的线程

0 c++ winapi multithreading threadpool

我在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);
}
Run Code Online (Sandbox Code Playgroud)

我只生成一个线程并等待3秒或完成.反正有没有做类似但QueueUserWorkItem用于排队工作的东西?

Ada*_*son 5

ThreadPool 不是长期运行操作的候选者,也不是您希望显式控制线程的实例.

此外,您应该考虑重构您的函数以允许使用中止标志正常退出,而不是强制终止该线程.