Я программирую в среде 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
для постановки в очередь?