Linux下多线程交叉打印1~100的奇偶数

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++){
   
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值