生产者消费者程序,用semaphore控制
生产者消费者程序,用semaphore控制
程序接受3个命令行参数,生产者数量,此消费者数量和缓冲区大小,运行程序的结果如下:
>./produce_consume 3 1 2
Main program has started ...
Producer 0 has started ...
Producer 0: Deposited item 0.
Producer 1 has started ...
Producer 1: Deposited item 1.
Producer 2 has started ...
Consumer 0 has started ...
Consumer 0: Removed item 0.
Producer 2: Deposited item 2.
2 item(s) left in the buffer!
Threads terminated!
或者:
>./produce_consume 2 3 2
Main program has started ...
Producer 0 has started ...
Producer 0: Deposited item 0.
Producer 1 has started ...
Producer 1: Deposited item 1.
Consumer 0 has started ...
Consumer 0: Removed item 0.
Consumer 1 has started ...
Consumer 1: Removed item 1.
Consumer 2 has started ...
或者:
>./produce_consume 2 2 2
Main program has started ...
Producer 0 has started ...
Producer 0: Deposited item 0.
Producer 1 has started ...
Producer 1: Deposited item 1.
Consumer 0 has started ...
Consumer 0: Removed item 0.
Consumer 1 has started ...
Consumer 1: Removed item 1.
0 item(s) left in the buffer!
Threads terminated!
输入的参数不同结果不同!
程序接受3个命令行参数,生产者数量,此消费者数量和缓冲区大小,运行程序的结果如下:
>./produce_consume 3 1 2
Main program has started ...
Producer 0 has started ...
Producer 0: Deposited item 0.
Producer 1 has started ...
Producer 1: Deposited item 1.
Producer 2 has started ...
Consumer 0 has started ...
Consumer 0: Removed item 0.
Producer 2: Deposited item 2.
2 item(s) left in the buffer!
Threads terminated!
或者:
>./produce_consume 2 3 2
Main program has started ...
Producer 0 has started ...
Producer 0: Deposited item 0.
Producer 1 has started ...
Producer 1: Deposited item 1.
Consumer 0 has started ...
Consumer 0: Removed item 0.
Consumer 1 has started ...
Consumer 1: Removed item 1.
Consumer 2 has started ...
或者:
>./produce_consume 2 2 2
Main program has started ...
Producer 0 has started ...
Producer 0: Deposited item 0.
Producer 1 has started ...
Producer 1: Deposited item 1.
Consumer 0 has started ...
Consumer 0: Removed item 0.
Consumer 1 has started ...
Consumer 1: Removed item 1.
0 item(s) left in the buffer!
Threads terminated!
输入的参数不同结果不同!
...全文
相关推荐
操作系统生产者消费者问题
基于Windows进程互斥分析和模拟 基于Microsoft Visual Studio环境的多线程编程验证互斥的原理,理解多线程编程中关键元素的定义与使用,通过使用Semaphore,mutex等控制元素,实现对生产者消费者模型的真实模拟,函数的功能与实现自己定义。
操作系统实验-模拟生产者与消费者问题
OS实验,采用C#语言模拟生产者与消费者问题,PV操作,可以动态的查看信号量和资源数等变量的变化,同时实现互斥访问缓冲区和信号量
Java——生产者-消费者问题
本程序模拟实现了“生产者-消费者”问题的解决过程,用图形界面动态演示了P、V操作过程以及生产者、消费者进程之间的工作流程。 本程序使用的算法是典型的P、V操作使用信号量解决“生产者-消费者”问题。 本程序在界面上使用了Java的swing接口函数,用矩形条表示生产者进程中待生产的产品,并设置了三个分区分别表示生产者进程待生产的产品、公共缓冲池中已生产的产品和消费者进程已消费的产品,以动画的效果动态演示了待生产产品变成消费者进程中已消费产品的过程,以及在这一过程中生产者进程和消费者进程协调工作的过程。 在程序运行过程中使用了两个生产者线程和两个消费者线程并发工作,并使用了线程随机休眠的策略,
windows编程 PV操作 直观实现生产者与消费者
用最简单的方式实现windows中的pv操作,让读者一目了然
生产者消费者有关的线程
消费者确立五个缓冲区,生产者与消费者互斥,生产者生产的东西必须全都被消费者消耗掉,才能执行下一个生产者的生产


