sleep () заставляет вашу программу останавливаться на определенный промежуток времени. Независимо от того, что еще происходит в системе, ваш поток не запустится снова, пока, по крайней мере, не пройдет время, отведенное для sleep (). pthread_yield () уведомляет операционную систему о том, что ваш поток завершил работу и может переключать выполнение на другой поток. Однако, если в это время нет потока с более высоким приоритетом, который должен был бы работать, ваш поток может сразу же возобновиться.
IOWs, после sleep () ваш поток гарантированно прекратит работу, даже если никому больше не нужно работать, в то время как pthread_yield () - просто вежливый способ дать другим потокам возможность работать, если им это необходимо.
Обновление в ответ на обновление вопроса: sleep () и pthread_yield () влияют только на вызывающий поток.