一个线程打印数字,一个线程打印字母,交替进行。
打印的结果为:12A 34B 56C 78D 910E ...4950Y 5152Z。
代码如下:
C代码
#include<stdio.h>
#include<pthread.h>
#include<string.h>
#include <sys/time.h>pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t even = PTHREAD_COND_INITIALIZER;int k=0;
void test1(){
int i;
for(i=0;i<26;i++)
{
pthread_mutex_lock(&mutex);
if(k%3==0){
k++;
pthread_cond_wait(&even, &mutex);
}
printf("%c ",'A'+ i);
pthread_mutex_unlock(&mutex);
}
}void test2(){
int j;
for(j=1;j<=52;j++)
{
pthread_mutex_lock(&mutex);
if(k%3!=0){
k++;
pthread_cond_signal(&even);
}
printf("%d",j);
pthread_mutex_unlock(&mutex);
}
}int main(){
pthread_t id1,id2;
int ret1,ret2;
ret2 = pthread_create(&id2,NULL,(void *)test2,NULL);
ret1 = pthread_create(&id1,NULL,(void *)test1,NULL);
pthread_join(id2,NULL);
pthread_join(id1,NULL);
return 0;
}