资源简介
操作系统课程设计实验报告
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#define constumersCount 2 //消费者数目
#define producersCount 2 //生产者数目
#define bufferSize 5 //缓冲区大小
int buffer[bufferSize]; //定义缓冲区
int in=0; //下一个放入产品的缓冲区指针
int out=0; //下一个取出产品的缓冲区指针
int produceId=0;
int consumeId=0;
sem_t avaliableBuffers; //信号量,可用空缓冲区
sem_t avaliableProducts; //信号量,可用产品
pthread_mutex_t mutex; //互斥信号量
pthread_t thread[constumersCount+producersCount]; //定义线程
/*
* 消费者模型
*/
void *consume(void *arg)
{
int num=(int)arg;
while(1)
{
sem_wait(&avaliableProducts); //可用产品减一
pthread_mutex_lock(&mutex); //加锁互斥信号量
printf(“线程%d 开始读操作\n“num);
consumeId=buffer[out]; //取出产品
out=(out+1)%bufferSize; //指针加一
pthread_mutex_unlock(&mutex); //解锁互斥信号量
sem_post(&avaliableBuffers); //可用空缓冲区加一
printf(“线程%d结束读操作\n“num);
sleep(1);
}
return NULL;
}
/*
*生产者模型
*/
void *produce(void *arg)
{
int num=(int)arg;
while(1)
{
sem_wait(&avaliableBuffers); //可用空缓冲区减一
pthread_mutex_lock(&mutex); //加锁
printf(“线程%d 开始写操作\n“num);
buffer[in]=produceId; //将产品放入空缓冲区
in=(in+1)%bufferSize; //指针指向下一个可用空缓冲区
pthread_mutex_unlock(&mutex); //解锁
printf(“线程%d 结束写操作\n“num);
sem_post(&avaliableProducts); //可用产品加一
sleep(5);
}
return NULL;
}
int main(void)
{
//初始化
int i;
sem_init(&avaliableBuffers0bufferSize);//可用空缓冲区初始为bufferSize
sem_init(&avaliableProducts00); //可用产品出是为0
pthread_mutex_init(&mutexNULL);
//创建消费者线程
for(i=0; i {
pthread_create(&thread[i]NULLconsume(void*) i);
printf(“线程%d发出读操作申请\n“i);
}
//创建生产者线程
for(i=constumersCount; i {
pthread_create(&thread[i]NULLproduce(void *)i);
printf(“线程%d发出写操作申请\n“i);
}
//pthread_join使一个线程等待另一个线程结束
for(int i=0; i pthread_join(thread[i]NULL);
//销毁信号量
sem_destroy(&avaliableBuffers);
sem_destroy(&avaliableProducts);
pthread_mutex_destroy(&mutex);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-03 16:49 OS课程设计\
目录 0 2018-07-03 16:47 OS课程设计\OS课程设计代码\
目录 0 2018-06-08 21:09 OS课程设计\OS课程设计代码\ProConsumer\
目录 0 2018-06-08 21:09 OS课程设计\OS课程设计代码\ProConsumer\bin\
目录 0 2018-06-02 10:17 OS课程设计\OS课程设计代码\ProConsumer\bin\Debug\
文件 2765 2018-06-02 15:10 OS课程设计\OS课程设计代码\ProConsumer\main.cpp
目录 0 2018-06-08 21:09 OS课程设计\OS课程设计代码\ProConsumer\obj\
目录 0 2018-06-02 10:17 OS课程设计\OS课程设计代码\ProConsumer\obj\Debug\
文件 1083 2018-06-02 10:01 OS课程设计\OS课程设计代码\ProConsumer\ProConsumer.cbp
文件 357 2018-06-03 22:30 OS课程设计\OS课程设计代码\ProConsumer\ProConsumer.layout
目录 0 2018-06-09 22:17 OS课程设计\OS课程设计代码\内存分配与跟踪\
目录 0 2018-06-10 01:05 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\
目录 0 2018-06-08 21:09 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\bin\
目录 0 2018-06-09 22:00 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\bin\Debug\
文件 965708 2018-06-09 22:00 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\bin\Debug\createData.exe
文件 1115 2018-06-04 22:29 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\createData.cbp
文件 161 2018-06-09 21:57 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\createData.depend
文件 358 2018-06-10 01:05 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\createData.layout
文件 480 2018-06-09 22:00 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\file.txt
文件 997 2018-06-09 22:00 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\main.cpp
目录 0 2018-06-08 21:09 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\obj\
目录 0 2018-06-09 22:00 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\obj\Debug\
文件 11154 2018-06-09 22:00 OS课程设计\OS课程设计代码\内存分配与跟踪\createData\obj\Debug\main.o
目录 0 2018-06-09 22:17 OS课程设计\OS课程设计代码\内存分配与跟踪\final\
目录 0 2018-07-03 15:05 OS课程设计\OS课程设计代码\内存分配与跟踪\final\final\
目录 0 2018-06-09 22:17 OS课程设计\OS课程设计代码\内存分配与跟踪\final\final\bin\
目录 0 2018-06-10 14:52 OS课程设计\OS课程设计代码\内存分配与跟踪\final\final\bin\Debug\
文件 975500 2018-06-10 14:52 OS课程设计\OS课程设计代码\内存分配与跟踪\final\final\bin\Debug\final.exe
文件 1065 2018-06-10 01:05 OS课程设计\OS课程设计代码\内存分配与跟踪\final\final\final.cbp
文件 201 2018-07-03 14:54 OS课程设计\OS课程设计代码\内存分配与跟踪\final\final\final.depend
文件 358 2018-07-03 15:05 OS课程设计\OS课程设计代码\内存分配与跟踪\final\final\final.layout
............此处省略171个文件信息
相关资源
- 数据库 课程设计 电信收费管理信息系
- BBS论坛系统—UML课程设计代码+mdl+报告
- 专业课程设计卷积码的译码
- 贵州大学大三计算机网络课程设计报
- 毕业论文管理系统源代码+数据库文件
- 计算机网络课程设计 课程设计 网络课
- Unix操作系统教程
- UML 餐厅订餐系统课程设计
- 任哲的《嵌入式实时操作系统ΜcOS-Ⅱ
- RTX51_FULL RTX51操作系统
- 操作系统概念第七版习题答案(中文
- AliOS_Things物联网操作系统.pdf
- unlock-all-v1.20VMware10.0专用MAC补丁包
- 操作系统实验之动态分区算法首次适
- 第06章 天气课程表.zip
- 任哲嵌入式实时操作系统uCos-ii原理及
- 微机课程设计报告
- 数据库 公司人事管理系统源代码+报告
- 操作系统课程设计.zip
- 数据库课程设计 论坛管理信息系统
- C Minus 语法分析器及课程设计报告
- 分布式嵌入式实时操作系统QNX
- 杭州电子科技大学操作系统复习提纲
- 日记本课程设计
- 操作系统 nachos实验四
- 操作系统实验多线程读者写者优先问
- 课程设计——电子购物网站
- 计算机组成课程设计:简单模型机设
- 操作系统课程设计--多用户多级目录文
- 操作系统原理课后答案第四版 庞丽萍
评论
共有 条评论