文件名称:
使用VC++6.0实现的“操作系统”课程中的生产者-消费者问题
开发工具:
文件大小: 44kb
下载次数: 0
上传时间: 2014-11-05
详细说明: 一、原理 生产者线程: while (true) 生产 wait(empty) wait(mutex) 将产品放入队列 signal(mutex) signal(full) end while 消费者线程: while (true) wait(full) wait(mutex) 从队列中取出产品 signal(mutex) signal(empty) 消费 end while 信号量full表示可消费的产品数量,empty代表空单元的数量(用于容纳新生产的产品),mutex用于互斥地访问产品队列。wait操作对应于P原语,表示可用资源数量<=0时,请求线程处于等待状态(线程阻塞);signal操作对应于V原语,表示释放可用资源,使得等待相同资源的线程进入就绪队列。 产品队列使用循环队列表示,设有rear和front指针,从rear指向的单元放入产品(入队),从front指向的单元取出产品消费(出队)。 二、具体实现 1. 信号量操作用Win32 API函数完成 (1)创建信号量:CreateSemaphore (2)wait操作:WaitForSing leObject (3)signal操作:ReleaseSemaphore 2. 线程操作使用MFC全局函数: (1)创建线程:AfxBeginThread (2)撤销线程:AfxEndThread 生产和消费在视图上以绘制饼图的方式展现。可以选择菜单项“开启线程->加快(减慢)生产,减慢(加快)消费”来随机调整生产和消费的时间,以观察生产者或消费者线程阻塞的状况。 程序在VC++6.0下编译通过。 ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.