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: %d \n",g_num);
g_num++;
pthread_cond_signal(&cond1);

本文介绍了使用C/C++实现两个线程交替打印奇偶数的三种方法。C语言方案中,通过线程间的唤醒机制实现交替打印;C++实现则提供了两种不同的解决方案,同样确保了线程间的同步与交替打印效果。

405

被折叠的 条评论
为什么被折叠?



