资源简介

代码片段和文件信息
#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个文件信息
相关资源
- FTP课程设计(服务端+客户端)
- 升腾Win终端系统升级方法新版.doc
- Uninstall_Cortana_WINCLIENT.CN.rar
- 高频电子线路课程设计报告收音机
- 直流稳压电源的课程设计、安装及调
- EDA课程设计_密码锁
- STM32基于rt_thread操作系统的SDHC卡文件
- 单片机课程设计 篮球计分器
- 数据结构课程设计 6 1 彩票系统
- 端口扫描课程设计详细的报告
- 步进电机课程设计(个人设计)
- 校园网络规划与设计课程设计
- 编译原理课程设计:词法语法编译器
- 操作系统 LRU算法 实验报告 及 程序代
-
simuli
nk 课程设计 qpsk - 武汉理工大学 单片机课程设计 16*16点
- [免费]车载CE6.0操作系统
- 数据库VFP课程设计
- 分页系统模拟实验 操作系统 课程设
- 模拟段页式虚拟存储管理中地址转换
- 硬件课程设计—流水灯(quartus软件
- 超市收银系统eclipse access大学课程设计
- 航空订票系统_数据结构课程设计
- 操作系统实验——虚存管理实验
- c 课程设计 职工信息管理系统
- 广工操作系统实验
- 汇编语言,课程设计,红绿灯
- 机床液压系统课程设计卧式钻床动力
- 广东工业大学操作系统实验四文件系
- 课程设计蔬菜大棚自动控制系统,包
评论
共有 条评论