Передайте значение индикатора, чтобы указать, должен ли поток печатать нечетное число или четное число через аргумент функции потока.
В зависимости от того же, начните с 0 (для четных чисел) или 1 (для нечетных чисел) и продолжайте увеличивать на 2 как в потоках, так и в печати.
Вы также можете распечатать идентификатор потока вместе с номером, чтобы указать, какая нить печатает что.
Полагаю, вы знаете, как использовать pthreads.
[Обновление]: ссылка для pthreads
Даже при использовании семафоров или мьютексов вам будет сложно получить выходные данные порядка 1,2,3 и т. Д., Так как вы никогда не знаете, какой поток получит шанс выполнить первым. Для этого вам, возможно, придется использовать некоторые расширенные понятия, такие как приоритет потока или межпотоковое взаимодействие с использованием условных переменных. Это всего лишь подсказки. Я надеюсь, что если вы перейдете по ссылке, вы получите больше информации.