#include<pthread.h>
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<semaphore.h>
sem_t sem;
void *runner(void * arg){
sem_wait(&sem);
//printf("this is son pthread\n");
printf("第N号奶茶开始制作,预计等待时间5秒\n");
sleep(5);
// sem_wait(&sem); //等待信号
pthread_exit(0);
}
int main(){
int res=-1;
res = sem_init(&sem,0,0); //初始化 使初值为0
if(res == -1){
printf("semaphore iniitialzation failed\n");
exit(EXIT_FAILURE);
}
pthread_t tid;
//创建线程
//sem_wait(&sem);
res = pthread_create(&tid,NULL,runner,NULL); //0为创建成功
if(res!=0){
printf("pthread_create failed\n");
exit(EXIT_FAILURE);
}
//printf("this is father pthread \n");
sem_post(&sem); //释放信号两 子线程开始执行
//printf("back to father thread");
res = pthread_join(tid,NULL); //释放信号两
printf("第N号奶茶可以取货!\n");
sem_destroy(&sem);
return 0;
}
线程通信信号两
最新推荐文章于 2024-07-17 18:07:42 发布