两个队列之间的队列优化

问题描述 投票:1回答:1

我将尽力解释我的问题。我在完成大学作业的最后部分时遇到了麻烦,而且确实陷入困境。

情况是这样的:我们必须建立一个机场模拟,其中一个线程代表一个航班(出发或到达),并且必须优化到达和离开,以最大程度地减少将航班降落到地面或飞机上的时间。出发。

所以,问题解决了。我的所有结构都在工作,在适当的时候创建了线程,共享内存完全可用,消息队列已创建并正在工作,等等。

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

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

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

提前感谢!

编辑:

我们有几个规范,但是我认为由于我只是在寻找一般标题,所以这篇文章可能会太大。简而言之,我们必须尽量减少订购到场航班(在空中等待)的次数,并“在进场和离场之间交替进行,以提高机场效率”

c multithreading simulation semaphore simulator
1个回答
0
投票

规格短。我了解这是为了尽量减少问题。但是由于规格有限,我只能在这里做一些猜测。

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

[一座旧桥只有一个车道,而一个桥只能容纳3辆时间而不会冒崩溃的危险。创建一个控制流量的解决方案这样,在任何给定时间,桥上最多有3辆车,并且他们都朝着同一方向前进。一辆车叫ArriveBridge当它到达桥并且想要进入指定的位置时方向(0或1);除非汽车驶入,否则ArriveBridge不应返回允许登上桥。汽车下车时呼叫ExitBridge桥梁,可能允许其他汽车上车。不用担心关于试图朝一个方向行驶的汽车挨饿的问题;只要确保汽车只要有可能,它们总是在桥上。

如果您这样认为,可以在这里找到解决此问题的方法:经过一些修改,您也许可以将其用于空中交通问题。

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

© www.soinside.com 2019 - 2024. All rights reserved.