登录 注册
当前位置:主页 > 资源下载 > 46 > 操作系统”课程中的生产者-消费者问题通过VC++6.0得以实现

操作系统”课程中的生产者-消费者问题通过VC++6.0得以实现

  • 更新:2024-06-10 20:00:56
  • 大小:44KB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:讲义 - 课程资源
  • 格式:RAR

资源介绍

一、原理 生产者线程: 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操作:WaitForSingleObject (3)signal操作:ReleaseSemaphore 2. 线程操作使用MFC全局函数: (1)创建线程:AfxBeginThread (2)撤销线程:AfxEndThread 生产和消费在视图上以绘制饼图的方式展现。可以选择菜单项“开启线程->加快(减慢)生产,减慢(加快)消费”来随机调整生产和消费的时间,以观察生产者或消费者线程阻塞的状况。 程序在VC++6.0下编译通过。