void getFreeIndexForNextThread()

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;
            }
        }
    }
}