#include<myhead.h>
//创建无名信号量
sem_t sem;//定义生产者
void *task1(void *arg)
{int num=5;while(num--){sleep(1);printf("我生产了一辆特斯拉\n");//释放资源sem_post(&sem);}//退出线程pthread_exit(NULL);
}
//定义消费者
void *task2(void *arg)
{int num=5;while(num--){//申请资源sem_wait(&sem);printf("我消费了一辆特斯拉\n");}//退出线程pthread_exit(NULL);
}int main(int argc, const char *argv[])
{//初始化无名信号量sem_init(&sem,0,0);//创建两个线程,生产者和消费者pthread_t tid1,tid2;if(pthread_create(&tid1,NULL,task1,NULL)!=0){printf("pthread_create tid1 error");return 0;}if(pthread_create(&tid2,NULL,task2,NULL)!=0){printf("pthread_create tid2 error");return 0;}printf("tid1:%#lx,tid2:%#lx\n",tid1,tid2);//回收线程资源pthread_join(tid1,NULL);pthread_join(tid2,NULL);//释放无名信号量sem_destroy(&sem);return 0;
}