资源简介
压缩包中包括linux和windows的程序源代码及实验报告
消费者和生产者问题如下:
• 一个大小为3的缓冲区,初始为空
• 2个生产者
– 随机等待一段时间,往缓冲区添加数据,
– 若缓冲区已满,等待消费者取走数据后再添加
– 重复6次
• 3个消费者
– 随机等待一段时间,从缓冲区读取数据
– 若缓冲区为空,等待生产者添加数据后再读取
– 重复4次
说明:
• 显示每次添加和读取数据的时间及缓冲区的状态
• 生产者和消费者用进程模拟,缓冲区用共享内存来实现
代码片段和文件信息
#include
#include
#include
#include
#include
#define SEM_EMPTY 0
#define SEM_FULL 1
#define SEM_MUTEX 2
#define KEY 3
#define SEM_KEY 4
void P(int semid int sem_num);
void V(int semid int sem_num);
int main(int argcchar * argv[])
{
int i;
int shmidsemid;
int *pBuf = NULL*output;
//打开共享内存
shmid = shmget(KEY sizeof(int)*4 0);
pBuf = (int*)shmat(shmid 0 0);
output = pBuf;
if(pBuf==NULL)
printf(“共享内存附加失败!\n“);
//创建信号量
semid = semget(SEM_KEY3 IPC_CREAT|0660);
for(i=0; i<4; i++)
{
P(semidSEM_FULL); //相当于P(SEM_FULL)申请读取缓冲区的数据
P(semidSEM_MUTEX); //相当于P(SEM_MUTEX)申请访问缓冲区
//在缓冲区中读取数据将1置为0
output = pBuf;
while((*output)==0)
{
output++;
}
(*output)=0;
//获取当前系统时间
struct timeval curtime;
gettimeofday(&curtimeNULL);
printf(“消费者%s在缓冲区中读取数据,读取时间为:%ld:%ld\n“
argv[0]curtime.tv_seccurtime.tv_usec);
printf(“此时,缓冲区的状态为:\n“);
printf(“[ %d ][ %d ][ %d ]\n“*(pBuf)*(pBuf+1)*(pBuf+2));
V(semidSEM_MUTEX); //相当于V(SEM_MUTEX)释放信号量SEM_MUTEX
V(semidSEM_EMPTY); //相当于V(SEM_EMPTY)释放信号量SEM_EMPTY
//随机等待一段时间
int time = random()%5;
sleep(time);
}
return 0;
}
//P操作
void P(int semid int sem_num)
{
struct sembuf sops;
sops.sem_num=sem_num;
sops.sem_op=-1;
sops.sem_flg=0;
semop(semid &sops 1);
}
//V操作
void V(int semid int sem_num)
{
struct sembuf sops;
sops.sem_num=sem_num;
sops.sem_op=1;
sops.sem_flg=0;
semop(semid &sops 1);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1810 2011-04-07 19:21 消费者生产者\Linux\consumer.c
文件 1192 2011-04-07 19:35 消费者生产者\Linux\main.c
文件 1778 2011-04-07 19:19 消费者生产者\Linux\producer.c
文件 7764 2011-04-11 08:39 消费者生产者\Windows\ConsumerAndProducer.cpp
文件 32768 2011-04-07 19:56 消费者生产者\Windows\ConsumerAndProducer.exe
文件 799232 2011-04-14 19:06 消费者生产者\实验报告.doc
目录 0 2011-04-14 19:06 消费者生产者\Linux
目录 0 2011-04-14 19:06 消费者生产者\Windows
目录 0 2011-04-14 19:07 消费者生产者
----------- --------- ---------- ----- ----
844544 9
- 上一篇:PS制作证件照动作集
- 下一篇:调研报告《网络安全》
相关资源
- 非均匀阵列+MUSIC算法 DOA仿真代码
- C程序设计第五版源代码 谭浩强
- STM8+FM17750低成本刷卡方案资料硬件设
- STM32人脸识别代码
- TM7705 AD7705驱动代码
- RM2019机甲大师赛官方赠与步兵代码开
-
[WebGIS之Openla
yers全面解析][郭明强黄 - 大话数据结构原书+源代码.zip164041
- 唐宇迪word2vec的系列代码自然语言处理
- 《程序员代码面试指南》(高清PDF版
- 大话设计模式带目录完整版[中文PDF源
- 层次聚类代码
- 雕刻机演示程序资料.rar
- 仿QQ截图工具源代码
- PCA分类器论文+代码实现+训练测试图像
- 毕业设计-网上购物系统源代码
- STM32控制sg90舵机代码.rar
- STM32F103 ADC测电压 代码
- 网上购书系统源代码
- 东北大学软件体系结构与设计模式四
- 2019年电赛C题国一代码.zip
- DES算法具体过程及伪代码
- LABVIEW 与PLC采集控制,硬件说明书等
- 完整的STM32F407_MODBUS通信工程代码。
- 基于正点原子的STM32mini版代码
- TM4C系列ds18b20温度传感器例程
- 代码复杂度检查工具Source Monitor
- HC-SR04超声波模块(包含基于51stm32配套
- clean code 英文原版,值得一看!
- GPS BDS单点定位代码
评论
共有 条评论