Linux并发程序课程设计报告,网络操作系统课程设计--进程机制与并发程序设计-linux下生产者与消费者的问题实现.doc...

网络操作系统课程设计

设计内容:进程机制与并发程序设计inux下生产者与消费者的问题实现进程机制与并发程序设计inux下生产者与消费者的问题实现

(1)掌握基本的同步互斥算法,理解生产者和消费者同步的问题模型。

(2)了解linux中多线程的并发执行机制,线程间的同步和互斥。

2、实验环境:C/C++语言编译器两类进程 ()和(),分别描述和的行为。PCB* readyhead=NULL, * readytail=NULL; // 就绪队列PCB* consumerhead=NULL, * consumertail=NULL; // 消费者队列PCB* producerhead=NULL, * producertail=NULL; // 生产者队列processproc()--- 给PCB分配内存产生相应的的进程empty()--- 如果缓冲区满,该进程进入生产者等待队列;linkqueue(exe,&producertail); // 把就绪队列里的进程放入生产者队列的尾部Main()---empty---in---full---out---finish

当缓冲池为空时,生产者生产产品in缓冲池 in=in+1

当缓冲池为满时,消费者消费产品out缓冲池 out=out+1

四、PV操作代码

semaphore empty=n;

semaphore full=0;

semaphore mutex=1;

message buffer[n];

int in=0;

int out=0;

void main()

{

parbegin(proceducer(),consumer());

}

void proceducer()

{ do

{ prodece a new meddage;

P(empty);

P(mutex);

send a new message to buffer[in];

in=(in+1)%n;

V(mutex);

V(full);

} while(true);

}

void consumer()

{ do

{ P(full);

P(mutex);

get a message from buffer[out];

out=(out+1)%n;

V(mutex);

V(empty);

comsume a message;

}while(true);

}

五、C++程序代码

#include "windows.h"

#include "iostream.h"

#include "math.h"

#define random (rand()*10000)/RAND_MAX //定义一个随机函数来生产产品,并且使两个顾产品间的时间少于10秒

int long waiting(0); //正在等待的产品的数目

int buffer; //空位的总数目

char empty; //缓冲区空

char full; //缓冲区满

int count(0); //产品的号码数

int finish(0); //生产完毕的产品数目

DWORD a;

void proceduce()

{

Sleep (10000);

cout<

}

void getconsum()

{

Sleep (10001); //产品被生产的函数,为了合理区分生产产品

cout<

}

HANDLE Mutex=CreateMutex(NULL, FALSE, "Mutex"); //用来实现进程的互斥

HANDLE proceducer=CreateSemaphore(NULL, 1,1, "proceducer");//定义信号量来进行线程间的同步

HANDLE consumer=CreateSemaphore(NULL,0,3,"consum");

DWORD WINAPI consum(LPVOID pParm2) //消费的线程

{

WaitForSingleObject(Mutex ,INFINITE); //p(mutex)来进行互斥操作

count++; //生产的是第几个产品

cout<

if (waiting

{

if (waiting!=0)

{

cout<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值