У меня небольшая проблема, и я не понимаю, почему мой код не работает.
Цель кода - использовать 3 разных потока для отображения последовательности:
(ABC) *
На выходе отображается только один 'A' ...
sem_t mutex;
char turn = 'a';
void displayA()
{
for(int i = 0; i < 100; i++)
{
sem_wait(&mutex);
if (turn == 'a')
{
printf("A");
turn = "b";
printf("%c", turn);
}
sem_post(&mutex);
}
return NULL;
}
int main()
{
sem_init(&mutex, 0, 1);
pthread_t thread1_id;
pthread_t thread2_id;
pthread_t thread3_id;
pthread_create(&thread1_id, NULL, displayA, NULL);
pthread_create(&thread2_id, NULL, displayB, NULL);
pthread_create(&thread3_id, NULL, displayC, NULL);
pthread_join(thread1_id, NULL);
pthread_join(thread2_id, NULL);
pthread_join(thread3_id, NULL);
//sem_destroy(&mutex);
printf("\n END main\n");
return 0;
}
Спасибо за любую помощь