in src/main/cpp/cleaner/windows/src/main.c [309:330]
void getFreeIndexForNextThread(HANDLE * list, DWORD max, DWORD * counter) {
DWORD code = 0;
DWORD maxReached = 0;
while(1) {
if((*counter)==max) {
maxReached = 1;
*counter = 0;
}
code = 0;
if(list[*counter]==INVALID_HANDLE_VALUE) {
break;
} else if(GetExitCodeThread(list[*counter], &code)!=0 && code==THREAD_FINISHED) {
break;
} else {
*counter = (*counter) + 1;
if((*counter)==max && maxReached == 1) {
*counter = WaitForMultipleObjects(max, list, FALSE, INFINITE) - WAIT_OBJECT_0;
}
}
}
}