经典指数          
原因
1791
浏览数
0
收藏数
 

编程实现三个线程ABC,并让它们顺次打印ABC

     举报   纠错  
 
切换
1 个答案

#include

#include

#include

#include

sem_t sem_id1, sem_id2, sem_id3;

void* func1(void*); //声明

void* func2(void*);

void* func3(void*);

int main(void) {

sem_init(&sem_id1, 0, 1); //活动

sem_init(&sem_id2, 0, 0);

sem_init(&sem_id3, 0, 0);

pthread_t pthread_id1, pthread_id2, pthread_id3;

pthread_create(&pthread_id1, NULL, func1, NULL);

pthread_create(&pthread_id2, NULL, func2, NULL);

pthread_create(&pthread_id3, NULL, func3, NULL);

pthread_join(phread_id1, NULL);

pthread_join(phread_id1, NULL);

pthread_join(phread_id1, NULL);

return 0;

}

void *func1 (void*) {

sem_wait(sem_id1);

printf("A\n");

  sem_post(sem_id2);

}

void *func2 (void*) {

sem_wait(sem_id2);

printf("B\n");

  sem_post(sem_id3);

}

void *func3 (void*) {

sem_wait(sem_id3);

printf("C\n");

  sem_post(sem_id1);

}

 
切换
撰写答案