В любой системе, Linux, Windows POSIX или нет, если вам нужно задать такой вопрос, то я боюсь, что ваше приложение движется в темное место :(
Даже если поток 3 должен был выдать, скажем, с помощью sleep (0), прерывание сразу после этого может просто запланировать повторный запуск потока 3, прервав поток 2, или ОС может запустить поток 3 сразу на другом свободном ядре, и оно мог добраться до мьютекса первым.
Вы должны заставить ваше приложение работать правильно (может быть, не оптимально), независимо от алгоритмов планирования / диспетчеризации ОС. Даже если вы заставите свой проект работать на тестовом боксе, вам в конечном итоге придется тестировать свою систему на каждой комбинации ОС / оборудования, чтобы убедиться, что она по-прежнему работает без блокировок или работает неправильно.
Работать с алгоритмами планирования, приоритетами потоков и т. Д. Следует только для повышения производительности вашего приложения, а не для того, чтобы попытаться заставить его работать правильно или чтобы он не блокировался!
Rgds,
Martin