#include<stdio.h>
#include<pthread.h>
#include<string.h>
pthread_cond_t cond;
pthread_mutex_t mutex =PTHREAD_MUTEX_INITIALIZER;
int flag=0;
char str[]="123456";
void* callback1(void* arg)
{
while(1)
{
pthread_mutex_lock(&mutex);
if(flag ==0)
{
printf("a");
flag=1;
}else
{
pthread_cond_wait(&cond,&mutex);
}
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
}
pthread_exit(NULL);
}
void* callback2(void* arg)
{
char temp = 0;
while(1)
{
pthread_mutex_lock(&mutex);
if(flag ==1)
{
printf("b");
flag=2;
}else
{
pthread_cond_wait(&cond,&mutex);
}
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
}
pthread_exit(NULL);
}
void* callback3(void* arg)
{
while(1)
{
pthread_mutex_lock(&mutex);
if(flag ==2)
{
printf("c\n");
flag=0;
}else
{
pthread_cond_wait(&cond,&mutex);
}
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
}
pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{
if(pthread_cond_init(&cond,NULL)!=0)
{
perror("pthread_cond_init");
return -1;
}
printf("创建成功\n");
pthread_t tid1,tid2,tid3;
if(pthread_create(&tid1,NULL,callback1,NULL)!=0)
{
perror("pthread_create");
return -1;
}
if(pthread_create(&tid2,NULL,callback2,NULL)!=0)
{
perror("pthread_create");
return -1;
}
if(pthread_create(&tid3,NULL,callback3,NULL)!=0)
{
perror("pthread_create");
return -1;
}
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
pthread_join(tid3,NULL);
return 0;
}
三个线程循环打印abc
最新推荐文章于 2024-03-20 03:08:35 发布