先看代码
//创建三个线程顺序打印abc
//利用条件变量加互斥量实现
//
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<pthread.h>//线程相关的头文件
int i=0;
int n=0;
//声明互斥量,条件变量
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond=PTHREAD_COND_INITIALIZER;
void* printa()
{
while(n<10)
{
pthread_mutex_lock(&mutex);
while(i!=1)
pthread_cond_wait(&cond,&mutex);
pthread_t tid;
tid=pthread_self();
printf("a tid:%lu\n",tid);
i++;
pthread_mutex_unlock(&mutex);
sleep(1);
}
return (void *)0;
}
void* printb()
{
while(n<10){
pthread_mutex_lock(&mutex);
while(i!=2)
pthread_cond_wait(&cond,&mutex);
pthread_t tid;
tid=pthread_self();
printf("b tid:%lu\n",tid);
i++;
pthread_mutex_unlock(&mutex);
}
return (void *)0;
}
void* printc()
{
while(n<10)
{