📅  最后修改于: 2023-12-03 14:54:30.495000             🧑  作者: Mango
在计算机系统中,打印机往往是一个共享资源,被多个进程或用户同时使用。为了避免出现冲突或竞争,需要使用打印队列来进行管理。打印队列是一个按照请求顺序排列的队列,每个请求都表示一个要打印的作业。
下面是一个简单的 C++ 实现。
#include <iostream>
#include <queue>
using namespace std;
class PrintQueue {
public:
void addRequest(int jobId) {
queue_.push(jobId);
}
void printNext() {
if (!queue_.empty()) {
int jobId = queue_.front();
queue_.pop();
cout << "Start printing job " << jobId << endl;
}
}
private:
queue<int> queue_;
};
int main() {
PrintQueue printQueue;
printQueue.addRequest(1);
printQueue.addRequest(2);
printQueue.addRequest(3);
printQueue.printNext();
printQueue.printNext();
printQueue.printNext();
printQueue.printNext(); // no job left
return 0;
}
PrintQueue
类有两个成员函数:addRequest()
和 printNext()
。
addRequest()
用于添加一个新的作业请求到队列中,它接受一个 jobId
参数,表示作业的编号。作业会被添加到队列的尾部。
printNext()
用于打印下一个作业,它会查看队列的头部,获取队首作业的编号,然后从队列中删除该作业。如果队列为空,则不打印任何东西。
在 main
函数中,我们创建了一个 PrintQueue
对象,并向它添加了三个作业。然后我们按照添加请求的顺序打印作业,最后注意到队列已经为空,没有作业需要打印。