分类:
2009-03-27 12:55:50
在此实现的方式是,用两个线程分别模拟顾客和理发师:
顾客线程调用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 //退出 程序