В Windows Sleep (0) обеспечивается управление потоками без указания минимального времени, (см. здесь)
Но в Linux и POSIX sleep (0) из unistd.h просто игнорируется.
Какой лучший способ получить Sleep (0) как поведение в Linux?
Ответ 1
Попробуйте sched_yield из "sched.h", который создается именно для того, что вы хотите сделать.
Если это не работает по какой-либо причине - попробуйте usleep(1) - это даст как минимум 1 микросекундную задержку (может быть больше), что, в свою очередь, вызывает переключатель контекста (если какой-либо поток ожидает).