题目:三个线程轮流打印数字,从0开始,其中:
线程1打印:0,3,6----
线程2打印:1,4,7----
线程3打印:2,5,8----
以此类推
在博客看到很多都是用Java和c++实现的,我想用c+来实现一下。
下面看代码;
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <pthread.h>
#include <stdio.h>
int g_num;
pthread_mutex_t mutex;
pthread_cond_t cond1,cond2,cond3;
void* Func_p1(void* arg)
{
while(1)
{
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond1,&mutex);
printf("---thread id: %lu , p1 num: %d \n",pthread_self(),g_num);
pthread_mutex_unlock(&mutex);
sleep(1);
}
return NULL;
}
void* Func_p2(void* arg)
{
while(1)
{
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond2,&mutex);
printf("---thread id: %lu , p2 num: %d \n",pthread_self(),g_num);
pthread_mutex_unlock(&mutex);
sleep(1);
}
return NULL;
}
void* Func_p3(void* arg)
{
while(1)
{
pthread_mutex_lock(&mute