作业要求:
用软件模拟一个生产者与消费者问题:一个仓库可以存放8件物品。生产者每生产一件产品,将产品放入仓库,仓库满了就停止生产。消费者每次从仓库中去一件物品,然后进行消费,仓库空时就停止消费。
编写一个SDI的MFC应用程序,动态模拟“生产者-消费者”问题
生产者一般处于休眠状态.随机地醒来去查看缓冲区,如果缓冲区不满,则填充一个数据到缓冲区中,如果是满的,则阻塞,等待消费者唤醒
消费者一般处于休眠状态.随机地醒来去查看缓冲区,如果缓冲区非空,则从缓冲区中消费一个数据,如果是空的,则阻塞,等待生产者唤醒 生产者和消费者互斥地访问缓冲区
在程序中使用辅助线程来模拟生产者和消费者的行为:本作业要求起2个生产者线程,1个消费者线程 同时在客户区中显示生产者和消费者的行为
采用ANISOTROPIC映射模式,设置窗口宽和高都为1000单位。
在主框架窗口的客户区中显示3X3 的方格,方格每边长100,外围的八个方格代表缓冲区,当缓冲区中某个槽被生产者填充数据,则相应的方格填充为灰色,当缓冲区中某个槽的数据被消费者取走,则相应的方格填充为白色
中间的一个方格用于指示缓冲区的状态:空时为蓝色,满时为红色,非空非满时为绿色
双击鼠标开始模拟,再次双击停止模拟
菜单中添加开始模拟和停止模拟的选项
状态栏中显示在模拟过程中缓冲区正在被谁操作:如果是生产者在操作缓冲区则显示“生产者”,如果是消费者在操作缓冲区则显示“消费者”
作业的过程中,参考了《用vc实现生产者消费者问题》,所以和原文有同样一个问题:那就是创建线程时的内存泄漏问题。虽然作业交了,但是这个问题在心头挥之不去……
源码下载
用软件模拟一个生产者与消费者问题:一个仓库可以存放8件物品。生产者每生产一件产品,将产品放入仓库,仓库满了就停止生产。消费者每次从仓库中去一件物品,然后进行消费,仓库空时就停止消费。
编写一个SDI的MFC应用程序,动态模拟“生产者-消费者”问题
生产者一般处于休眠状态.随机地醒来去查看缓冲区,如果缓冲区不满,则填充一个数据到缓冲区中,如果是满的,则阻塞,等待消费者唤醒
消费者一般处于休眠状态.随机地醒来去查看缓冲区,如果缓冲区非空,则从缓冲区中消费一个数据,如果是空的,则阻塞,等待生产者唤醒 生产者和消费者互斥地访问缓冲区
在程序中使用辅助线程来模拟生产者和消费者的行为:本作业要求起2个生产者线程,1个消费者线程 同时在客户区中显示生产者和消费者的行为
采用ANISOTROPIC映射模式,设置窗口宽和高都为1000单位。
在主框架窗口的客户区中显示3X3 的方格,方格每边长100,外围的八个方格代表缓冲区,当缓冲区中某个槽被生产者填充数据,则相应的方格填充为灰色,当缓冲区中某个槽的数据被消费者取走,则相应的方格填充为白色
中间的一个方格用于指示缓冲区的状态:空时为蓝色,满时为红色,非空非满时为绿色
双击鼠标开始模拟,再次双击停止模拟
菜单中添加开始模拟和停止模拟的选项
状态栏中显示在模拟过程中缓冲区正在被谁操作:如果是生产者在操作缓冲区则显示“生产者”,如果是消费者在操作缓冲区则显示“消费者”
作业的过程中,参考了《用vc实现生产者消费者问题》,所以和原文有同样一个问题:那就是创建线程时的内存泄漏问题。虽然作业交了,但是这个问题在心头挥之不去……
源码下载