作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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/
我是一名优秀的程序员,十分优秀!