linux下用程序实现生产者消费者问题

本文介绍如何在Linux环境下利用共享内存解决生产者消费者问题。通过借鉴他人代码,理解并应用相关进程间通信函数,实现进程互斥和资源争用的解决方案。程序设计考虑了可读性,但可能对外人来说较为复杂。
摘要由CSDN通过智能技术生成

额,生产者消费者这个问题应该不算少见,如果是用程序还是蛮简单的吧,但是如果是叫用进程间通信,分析进程争用资源的现象,解决进程互斥。。。dbq,我承认我划水了,用共享内存来实现的,曲解一下题意,为了更快地完成作业(上天保佑老师不懂程序,不懂任务。。。)
借鉴学习了https://blog.csdn.net/qq_27664167/article/details/81277096,也就是各个函数的用法。至于思想的话,dbq,偶是个傻子。。。

有小姐姐表示看不懂我的程序,自己瞎定义的变量、函数名什么的太多了。唔,这个是按自己的风格来的,自己能看懂,other可能看不太懂,但毕竟是小姐姐嘛,还是要稍微照顾一下的(???程序又不对,说什么的,不祸害人的嘛)

 

#include <stdio.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <signal.h>
#include <wait.h>
#include <time.h>
#include <stdlib.h>

#define MAX_LEN 5//生产者最多生产的数量
#define TIME 20  //alarm时钟的时间,主程序运行20s,退出
#define CONSUME_TIME_LIMIT 1000 //随机consume生产时间,用来对rand取模
#define CONSUME_SPEED 500       //时间底限,consume生产时间最少500ms 
#define PRODUCE_TIME_LIMIT 2    //produce消费时间,单位s
#define PRODUCE_SPEED 1



typedef struct shmInfo{//用两下标,模拟数组
	int head_index;//头,生产者产生的产品
	int tail_index;//尾,消费者消费的产品
}shmInfo;

int wait_flag = 0;//使pro
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值