Salut,
Sleep permet de bloquer l'exécution d'un thread pour une certaine durée. Si tu mets des Sleep(1) un peu de partout (Dans les boucles, pour qu'elle soit appelée à chaque tour, tu peux libérer le processeur pour les autres threads).
Forcément, ton programme sera plus long : tu perds au moins une milliseconde de temps CPU... Mais justement la CPU ne sera pas scotché, et tu peux te retrouver avec une consommation CPU intéressante, genre 10% ou autre : tout dépend de la fréquence d'appel.
Un compromis est d'appeler Sleep(0). Cela demande à Windows de regarder si un autre thread ne voudrait pas un peu de temps CPU. "Allez y les gars c'est votre tour".