【问题标题】:What are practical applications of Queues?队列的实际应用是什么?
【发布时间】:2011-01-24 11:16:50
【问题描述】:

队列在计算机科学中的实际应用是什么。我们在哪里使用它们,为什么?我听说我们在视频游戏和计算机模拟程序中使用它们,是真的吗?为什么?除了这两个领域之外,队列作为数据结构还有哪些实际应用?

【问题讨论】:

  • 你有没有排队等过?任何必须等待服务、能力等的东西……都必须排队等待,或者英国人称之为队列。
  • 当你想以某种顺序传递一些东西时,它们就会被使用。
  • 以您的个人资料为例。您已经提出了 20 个问题,等待您为他们接受答案。

标签: computer-science queue


【解决方案1】:
  1. 在单个共享资源(如打印机)上处理请求。
  2. CPU 任务调度。
  3. 在现实生活场景中,呼叫中心电话系统使用队列将呼叫他们的人按顺序排列,直到服务代表空闲。

更多信息https://coderworld109.blogspot.in/2017/12/applications-of-queue-data-structure.html

【讨论】:

    【解决方案2】:

    打印机保持进程。 在 CPU 调度中。 作为页面替换策略(FIFO)。

    有许多现实生活中的例子可能有助于更好地理解队列。例如,无论我们在哪里使用队列来获取或给予任何东西。

    【讨论】:

      【解决方案3】:

      算法和数据结构紧密结合
      因此,通常使用队列取决于将操纵堆栈入队和出队的算法
      反过来。取决于应用程序

      例如,如果您正在制作一个应用程序,该应用程序将接受来自多个用户的输入,并且您必须以“先到先服务”为基础为它们提供服务..这意味着您的应用程序将首先处理第一个请求
      而不是每次检查每个请求的时间戳,看看谁是最老的
      您应该将每个传入请求排入堆栈
      并且您每次只需将堆栈出列即可查看下一个请求

      【讨论】:

        【解决方案4】:

        队列也可用于实现广度优先搜索 - 一种遍历 Graph 中所有可以从起始顶点到达的顶点的算法。

        【讨论】:

          【解决方案5】:

          游戏应用: 探索互连房间迷宫的算法使用队列来跟踪哪些选项尚未探索

          【讨论】:

            【解决方案6】:

            队列使用先进先出概念 (FIFO)。第一个到达的工作是第一个被处理的。例如操作系统将要打印的文档排入队列,打印机只会打印第一个到达并输出的文档

            【讨论】:

              【解决方案7】:

              堆栈用于各种软件中的撤消按钮。最近的大多数更改被推入堆栈。甚至浏览器上的后退按钮也借助堆栈来工作,所有最近访问过的网页都被推入堆栈。

              队列用于打印机或上传图像。其中第一个输入的就是第一个被处理的。

              【讨论】:

                【解决方案8】:

                队列的典型用途是在模拟和操作系统中。

                Operating systems often maintain a queue of processes that are ready to execute or that are waiting for a particular event to occur.
                Computer systems must often provide a “holding area” for messages between two processes, two programs, or even two systems. This holding area is usually called a “buffer” and is often implemented as a queue.
                

                我们的软件队列在现实世界的队列中有对应的队列。我们排队买披萨,进入电影院,在收费公路上开车,坐过山车。队列数据结构的另一个重要应用是帮助我们模拟和分析这种真实世界的队列。

                【讨论】:

                  【解决方案9】:

                  在计算机中编译是由 FIRST IN FIRST OUT[FIFO] 进行的。第一行编译首先 n 结果打印首先是 QUEUE。

                  【讨论】:

                    【解决方案10】:

                    所有类型的系统,其中请求/作业/客户端由一个或多个处理程序处理:传入的项目存储在一个队列中,当一个处理程序空闲时,它会从队列中弹出一个新项目并开始处理它。此模式用于所有 Web 服务器等。见producer-consumer problem

                    【讨论】:

                      【解决方案11】:

                      假设您要一次打印多个文档。您的操作系统将所有这些文档放在一个队列中并将它们发送到打印机。打印机按照文档放入队列的顺序(即先进先出)获取并打印每个文档。

                      在有多个用户或联网计算机系统的情况下,您可能与其他用户共享一台打印机。当您请求打印文件时,您的请求将被添加到打印队列中。当您的请求到达打印队列的最前面时,将打印您的文件。这样可以确保一次只有一个人可以使用打印机,并且这种访问是按照先到先得的原则提供的。

                      【讨论】:

                        【解决方案12】:

                        队列用于您希望在某些实体上有效维护先进先出顺序的任何情况。这些情况确实出现在每种类型的软件开发中。

                        想象一下,您有一个为成千上万的用户提供文件的网站。您不能为所有请求提供服务,一次只能处理 100 个请求。一个公平的政策是先到先得:按到达顺序一次发球 100 个。 Queue 肯定是最合适的数据结构。

                        同样在多任务操作系统中,CPU 无法一次运行所有作业,因此必须将作业批量化,然后根据某种策略进行调度。同样,在这种情况下,队列可能是一个合适的选择。

                        【讨论】:

                          【解决方案13】:

                          我使用队列来确定我回答 SO 问题的优先级。我尝试对它们进行多处理,但对其进行了完整的哈希处理。

                          【讨论】:

                          • @High-Performance Mark 也许有了两台显示器,你可以使用你的两个处理器(又名大脑半球)来并行处理两个帖子......但由于各种原因,I/O 仍然很糟糕:- )
                          • @Péter Török:你怎么知道我做了脑叶切除术?
                          猜你喜欢
                          • 2019-08-11
                          • 1970-01-01
                          • 2010-09-06
                          • 2013-03-09
                          • 1970-01-01
                          • 2014-09-12
                          • 2011-01-13
                          • 2019-08-27
                          相关资源
                          最近更新 更多