Chinaunix首页 | 论坛 | 博客
  • 博客访问: 142107
  • 博文数量: 17
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 475
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-30 14:55
文章分类

全部博文(17)

文章存档

2011年(1)

2009年(12)

2008年(4)

我的朋友

分类:

2009-03-27 12:55:50

采用队列描述等候理发的顾客:
push(random)表示新顾客到来,其中random为时间间隔;
pop()
表示理发师开始为理发理发,并通过Sleep(TimePerMan)模拟理发过程。

在此实现的方式是,用两个线程分别模拟顾客和理发师:

顾客线程调用push()方法,

理发师调用pop()方法,

列队满时新顾客离开,

列队为空时理发师休息。

当工作时间超限时,不再接受新用户,理发师处理好现有队列中的用户后,程序退出。

运行结果如下:

C:\Qtest\Debug>Queue.exe //设置队列长度为7

队列人数为 1 //队列人数由顾客线程在新顾客到达后输出,下同

等待人数为 0 //等待人数由理发师线程在开始为顾客理发后输出 ,下同

队列人数为 1

队列人数为 2

队列人数为 3

等待人数为 2

队列人数为 3

等待人数为 2

队列人数为 3

队列人数为 4

等待人数为 3

队列人数为 4

队列人数为 5

等待人数为 4

队列人数为 5

等待人数为 4

队列人数为 5

队列人数为 6

等待人数为 5

队列人数为 6

等待人数为 5

队列人数为 6

队列人数为 7

等待人数为 6

队列人数为 7

队列已满,离开; // 队列已满,新到顾客离开

队列已满,离开;

队列已满,离开;

队列已满,离开;

队列已满,离开;

等待人数为 6 //理发师为下一位顾客理发,队列有空位

队列人数为 7 //队列有空位 ,接收新顾客

等待人数为 6 //工作时间结束,不再接受 新到顾客

等待人数为 5

等待人数为 4

等待人数为 3

等待人数为 2

等待人数为 1

等待人数为 0 //队列为空,变更理发师状态

休息时间;

Exit //退出 程序

src

阅读(1913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~