队列在计算机科学中具有哪些实际应用?我们在哪些地方使用它们以及为什么要使用它们?我听说我们在视频游戏和计算机模拟程序中使用它们,这是真的吗?为什么?除了这两个领域外,队列作为数据结构还有哪些其他实际应用呢?
队列在计算机科学中具有哪些实际应用?我们在哪些地方使用它们以及为什么要使用它们?我听说我们在视频游戏和计算机模拟程序中使用它们,这是真的吗?为什么?除了这两个领域外,队列作为数据结构还有哪些其他实际应用呢?
堆栈(Stacks)被用于各种软件中的撤消按钮。最近的更改被推送到堆栈中。即使是浏览器的后退按钮也依靠堆栈工作,其中所有最近访问的网页都被推入堆栈中。
队列(Queues)在打印机或上传图片等情况下使用。先进入队列的将首先被处理。
队列被用于任何需要高效地维护某些实体的先进先出顺序的情况。这种情况实际上在各种软件开发中都会出现。
想象一下,你有一个网站,为数千名用户提供文件服务。你不能同时处理所有请求,只能处理100个。公平的政策应该是先到先服务:按照到达顺序每次服务100个。队列肯定是最合适的数据结构。
同样,在多任务操作系统中,CPU 无法同时运行所有作业,因此必须将作业批量处理,然后根据某些策略进行调度。在这种情况下,队列可能是一个合适的选项。
我使用队列来优先回答SO问题。我尝试过用多进程处理它们,但是完全搞砸了。
各种系统中,请求/作业/客户端由一个或多个处理程序处理:传入的项目存储在队列中,当处理程序空闲时,它会从队列中弹出新项目并开始处理。这种模式在所有Web服务器中都被使用,其中包括生产者-消费者问题。
队列的典型应用包括模拟和操作系统。
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.
我们的软件队列在现实世界中也有对应的队列。我们排队买披萨、进电影院、在高速公路上行驶以及乘坐过山车。队列数据结构的另一个重要应用是帮助我们模拟和分析这些现实世界的队列。
队列也可以用于实现广度优先搜索 - 一种遍历可以从起始顶点到达的图中所有顶点的算法。
队列使用先进先出的概念(FIFO)。第一个到达的工作将首先被处理。例如,操作系统将文档排队以便打印,打印机只会打印第一个到达并产生输出的文档。
游戏应用程序: 探索相互连接的迷宫的算法使用队列来跟踪尚未被探索的选项。