0

我们有一个任务,我们必须使用链表实现一个打印机假脱机程序。我已经使用 STL 中的列表来实现所有内容。我可以让程序发送打印命令并维护文档的状态。问题是我不知道如何模仿/发送虚拟打印命令以便打印文档。如果我使用 Sleep(),整个程序会有延迟。而我希望反手打印,其他用户可以访问该程序。任何关于我的问题的帮助将不胜感激谢谢。

4

1 回答 1

1

在 REAL 打印假脱机程序中,要么有多个线程(或者在 Unix 中,可能是一个fork),要么系统使用“等待多个对象”类型的方法,当有东西要打印时,文件的一部分被发送到打印机,设置为当该部分“消耗”时,等待对象“准备好”。然后后台处理程序等待某些事情发生(新作业或打印的)。等待完成后,它会确定发生了什么。如果是新的打印作业,请将其排队,如果它是“一些打印完成”,它会检查这是否是最后的打印并完成作业,或者将更多内容发送到打印机。

在 pseudocdoe 中,它可能看起来像这样:

for(;;)
{
   what = wait_for_work();
   switch (what)
   {
     case new_job:
       add_new_job();
       break;
     case print_write_done:
       if (document_complete)
          remove_current_job();
       else
          send_more_from_current_job();
       break;
     case spooler_terminate:
       exit(0);
     default:
       print_error_message();
   }
}

显然,没有看到你的代码,很难说你应该如何实现它。但是可以有一个计时器来模拟“以小块打印的文档”,例如,每 100 毫秒消耗 10KB。

于 2013-09-15T09:01:07.623 回答