【问题标题】:Queue optimizations between two queues两个队列之间的队列优化
【发布时间】:2019-12-03 11:44:54
【问题描述】:

我会尽力解释我的问题。我在完成大学作业的最后一部分时遇到了麻烦,而且真的被卡住了。

场景是这样的:我们必须建立一个机场的模拟,其中一个线程代表一个航班(出发或到达),并且必须优化到达和离开以最小化航班降落所花费的时间或离开。

那么,就问题而言。我的所有结构都在工作,线程在适当的时候创建,共享内存功能齐全,消息队列创建并正常工作,等等。

但现在,我正在为实际管理航班而苦苦挣扎。我创建了两个链接列表,一个用于到达,一个用于离开。链表的每个节点都有一个指向共享内存空间的指针。这些空间中的每一个都有与航班相关的信息(到达时的 eta 和燃料,起飞时的期望起飞)。到达链表按ETA排序,起飞链表按期望起飞排序。这些链表应该是一个队列。

问题是,我不知道如何管理它们。可以同时有两个出发或两个到达,但不能同时有到达和出发。

我正在考虑使用信号量,但我不确定这是否是一个好方法。我非常感谢任何正确方向的指示。

提前致谢!

编辑:

我们有一些规范,但我认为这篇文章会变得太大,因为我只是在寻找一般性的头条新闻。简而言之,我们必须尽量减少我们需要订购到达等待(在空中等待)的次数,并“在到达和离开之间交替以提高机场效率”

【问题讨论】:

  • 为什么不干脆让一个到达航班降落,然后让一个出发航班开始呢?即使他们有相同的 ETA/ETD,只是在队列之间切换应该可以正常工作。
  • @Someprogrammerdude 我相信我们应该以更有效的方式管理它们,但我无法掌握如何
  • “一种更有效的方法”是非常开放和模棱两可的,它可能意味着任何东西。也许您需要向您的老师或助教进行澄清。
  • @Someprogrammerdude 我们有一些规范,但我认为这篇文章会变得太大,因为我只是在寻找一般的头条新闻。简而言之,我们必须尽量减少我们需要订购到达hold(在空中等待)的次数,并“在到达和离开之间交替以提高机场效率”。
  • 请编辑您的问题以包含该信息,因为这对于理解问题至关重要。

标签: c multithreading simulation semaphore simulator


【解决方案1】:

规格很短。我知道这是为了使问题保持​​小。但是由于规格有限,我只能在这里做一些猜测工作。

这个问题在我看来类似于旧桥问题。

一座老桥只有一条车道,一次最多只能停3辆车 时间而不冒崩溃的风险。创建控制流量的解决方案 因此,在任何给定时间,桥上最多有 3 辆汽车,并且 他们都朝着同一个方向前进。一辆车叫 ArriveBridge 当它到达桥并想进入指定的 方向(0 或 1); ArriveBridge 不应该返回,直到汽车 允许上桥。一辆车在下车时呼叫 ExitBridge 桥,可能允许其他汽车上车。别担心 关于饥饿的汽车试图朝一个方向行驶;只要确保汽车 当他们可以时,总是在桥上。

如果你这么认为,你可以在这里找到解决这个问题的方法: 进行一些修改后,您或许可以将其用于解决空中交通问题。

https://codeistry.wordpress.com/2018/04/18/old-bridge/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-19
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多