C/C++两个线程交替打印
C语言第一种方式
实现思想主要是让两个线程互相唤醒对方来交替打印数字
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <stdio.h>
int g_num = 1;
pthread_mutex_t mutex;
pthread_cond_t cond1,cond2;
void* thread1(void* arg)
{
while(1)
{
pthread_mutex_lock(&mutex);
//如果需要交替打印一定范围(例如1-10)内的数字,那么可以加上下面两行代码
//if(g_num > 10)
//exit(1);
printf("Thread1: %d \n",g_num);
g_num ++;
pthread_cond_signal(&cond2);
pthread_cond_wait(&cond1,&mutex);
pthread_mutex_unlock(&mutex);
sleep(1);
}
return NULL;
}
void* thread2(void* arg)
{
while(1)
{
//这个sleep(1)加在前面是因为开启线程时有可能是线程2先打印,
//导致变成thread2输出奇数,threa1输出偶数。为了避免这种情况,可以在延迟下线程2的打印。
sleep(1);
pthread_mutex_lock(&mutex);
printf("Thread2: