📜  打印队列 c++ (1)

📅  最后修改于: 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 对象,并向它添加了三个作业。然后我们按照添加请求的顺序打印作业,最后注意到队列已经为空,没有作业需要打印。

参考资料