В соответствии с документацией MSDN для Sleep :
При значении, равном нулю, поток освобождает остаток своего временного интервала от любого другого потока, готового к запуску.Если нет других потоков, готовых к запуску, функция немедленно возвращается и поток продолжает выполнение.
Важно понимать, что да, это дает возможность другим потокам запускаться, но еслинет готовых к запуску, затем ваш поток продолжает работу, оставляя загрузку ЦП на уровне 100%, поскольку что-то всегда будет работать.Если ваш цикл while просто вращается во время ожидания какого-либо условия, вы можете рассмотреть возможность использования примитива синхронизации, такого как событие для сна, пока условие не будет выполнено, или для сна в течение небольшого промежутка времени, чтобы предотвратить максимальную загрузку ЦП.