当前位置:首页 > 资格考试 > 正文

基于信号量机制的生产者消费者问题的实现,帮我看下下面代码缺少哪里,哪里出错了?

在windows操作系统中用信号量机制解决生产者消费者问题的代码

windows里面信号量比较难用,下面是我模仿一本教材写的一个例子,加了一些注释,在.net 2008环境下调试通过的。你可以参考下,不过直接复制过去是很难调的过的吧,还有其他一些相关文件。 // ProducerCustomer2.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include //与课本不同 #include //与课本不同 #include #include using namespace std; //定义一

使用信号量实现有限缓冲区的生产者和消费者问题(使用fork(),semget()等函数,能在GCC下运行)

看我下面的代码, 父进程是消费者,子进程是生产者。 REPEATS 决定总共生产的次数 (可以自己修改) CONSUMER_SPEED 决定消费的速度 (越大越慢,可以自己修改) PRODUCER_SPEED 决定生产的速度 (越大越慢,可以自己修改) 我的例子里,生产者生产一个随机数。另外消费速度比生产速度慢,所以可以看到输出中,+++ (生产者) 开头的出现的比--- (消费者)多,当生产者结束后,就只有 --- 打印了。 对这个程序由什么问题,可以baidu hi我。在linux/unix下用 gcc 编译。 #include #include

有关利用记录型信号量解决生产者消费者的问题?

有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将其所生产的产品放入一个缓冲区中;消费者进程可从一个缓冲区中取走产品去消费。尽管所有的生产者进程和消费者进程都是以异步方式运行的,但它们之间必须保持同步,既不允许消费者进程到一个空缓冲区去取产品,也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区投放产品。 参考代码: int in = 0, out = 0;//in: 输入指针, out: 输出指针; item buffer[n];//n个缓冲区组成的数组; semaphore mut

用信号量机制解决生产者消费者问题

import java.util.concurrent.Semaphore; class Q { //仓库 int n; //仓库中的产品 // Start with consumer semaphore unavailable. static Semaphore semCon = new Semaphore(0); static Semaphore semProd = new Semaphore(1); void get() { try { semCon.acquire(); } catch(InterruptedException e) { System.out.println("Inte

用信号量解决生产者消费者问题

import java.util.concurrent.Semaphore; class Q { //仓库 int n; //仓库中的产品 // Start with consumer semaphore unavailable. static Semaphore semCon = new Semaphore(0); static Semaphore semProd = new Semaphore(1); void get() { try { semCon.acquire(); } catch(InterruptedException e) { System.out.println("Inte
展开全文阅读