0
嗨我想讓3線程將多次打印不同的消息。然後同步它們,例如打印一個兩個三個一個兩個三個一個兩個三個......當我運行程序時有時候這是不正確的,我不知道我在做什麼錯誤。Posix Semaphores同步線程
sem_t sema, semb, semc;
void *printone(void *arg)
{
printf("<ONE>");
sem_wait(&semc);
sem_post(&semb);
}
void *printtwo(void *arg)
{
printf("<TWO>");
sem_wait(&sema);
sem_post(&semc);
}
void *printthree(void *arg)
{
printf("<THREE>");
sem_wait(&semb);
sem_post(&sema);
}
main()
{
pthread_t th1,th2,th3;
int i;
sem_init(&sema,0,1);
sem_init(&semb,0,0);
sem_init(&semc,0,0);
for(i=0;i<10;i++){
pthread_create(&th1, NULL, printone, (void *) 1);
pthread_create(&th2, NULL, printtwo, (void *) 2);
pthread_create(&th3, NULL, printthree, (void *) 3);
pthread_join(th1, NULL);
pthread_join(th2, NULL);
pthread_join(th3, NULL);
}
pthread_exit(NULL);
}
幫助,非常感謝! – Artemis