Нет оснований делать такое предположение.Это зависит от того, когда поток 1 и поток 2 вызывают sem_wait (), т. Е. От того, что они делают раньше, и от того, как планировщик предоставляет им ЦП для работы.Если вы хотите, чтобы поток 1 проснулся перед потоком 2, вам нужен еще один семафор:
main:
sem_init(&x,0,0);
sem_init(&y,0,0);
thread 1:
sem_wait(&x);
sem_post(&y);
thread 2:
sem_wait(&y);
thread 3:
sem_post(&x);