Linux下多线程交叉打印1~100的奇偶数
第一次写博客有亿点点紧张
1、要求:
1.有三个线程,
1.1线程1负责把1-99之间的奇数,放入缓冲区
1.2线程2负责把2-100之间的偶数,放入缓冲区
1.3线程3负责把缓冲区的数据读出并打印在终端
2.三个线程之间互斥使用缓冲区
3.线程1和线程2交替放入数据,即按照1,、2、3……的顺序放入
4.线程3按照1,、2、3……的顺序取出数据打印
5.只有当数据被线程3取走以后,线程1和线程2才能往缓冲区放数据
6.只有当线程1或线程2往缓冲区放入数据后,线程3才能取走数据
2、程序流程图
3、代码
/*Copyright(c)
**--------------File Info------------------------
** Created by: mcj
** Created date: 2020.6.1
** Last modified Date: 2020.6.11
*/
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
sem_t sem1,sem2,sem3;
int buf[100];
void* th_Fun1(void* args){
//将1~100奇数放入缓冲区
int i;
for(i= 1;i< 101;i++){