#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <string>
pthread_cond_t cond1;
pthread_cond_t cond2;
pthread_mutex_t block1;
pthread_mutex_t block2;
pthread_mutex_t numBlock = PTHREAD_MUTEX_INITIALIZER;
int num = 0;
void *display(void *para) {
int i = 0;
while (1) {
pthread_cond_wait(&cond1, &block1);
pthread_mutex_lock(&numBlock);
num++;
pthread_mutex_unlock(&numBlock);
sleep(1);
printf("display num==[%d]\n", num);
pthread_cond_signal(&cond2);
}
}
int main(int argc, char const *argv[]) {
pthread_t id;
pthread_cond_init(&cond1, NULL);
pthread_cond_init(&cond2, NULL);
pthread_create(&id, NULL, display, NULL);
while (1) {
pthread_mutex_lock(&numBlock);
num++;
pthread_mutex_unlock(&numBlock);
sleep(1);
printf("main num+++[%d]\n", num);
pthread_cond_signal(&cond1);
pthread_cond_wait(&cond2,&block2);
}
pthread_join(id, NULL);
return 0;
}
网友评论