gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 22:30:46 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com