Любое ожидание чего-либо должно происходить с использованием ф-ций WaitForSingleObject или WaitForMultipleObjects. Ну в крайнем случае - можно критические секции поюзать, которые есть обвеска mutex-а лишним говном. И ни в коем случае не опросом переменной в цикле.