【发布时间】:2019-12-03 11:44:54
【问题描述】:
我会尽力解释我的问题。我在完成大学作业的最后一部分时遇到了麻烦,而且真的被卡住了。
场景是这样的:我们必须建立一个机场的模拟,其中一个线程代表一个航班(出发或到达),并且必须优化到达和离开以最小化航班降落所花费的时间或离开。
那么,就问题而言。我的所有结构都在工作,线程在适当的时候创建,共享内存功能齐全,消息队列创建并正常工作,等等。
但现在,我正在为实际管理航班而苦苦挣扎。我创建了两个链接列表,一个用于到达,一个用于离开。链表的每个节点都有一个指向共享内存空间的指针。这些空间中的每一个都有与航班相关的信息(到达时的 eta 和燃料,起飞时的期望起飞)。到达链表按ETA排序,起飞链表按期望起飞排序。这些链表应该是一个队列。
问题是,我不知道如何管理它们。可以同时有两个出发或两个到达,但不能同时有到达和出发。
我正在考虑使用信号量,但我不确定这是否是一个好方法。我非常感谢任何正确方向的指示。
提前致谢!
编辑:
我们有一些规范,但我认为这篇文章会变得太大,因为我只是在寻找一般性的头条新闻。简而言之,我们必须尽量减少我们需要订购到达等待(在空中等待)的次数,并“在到达和离开之间交替以提高机场效率”
【问题讨论】:
-
为什么不干脆让一个到达航班降落,然后让一个出发航班开始呢?即使他们有相同的 ETA/ETD,只是在队列之间切换应该可以正常工作。
-
@Someprogrammerdude 我相信我们应该以更有效的方式管理它们,但我无法掌握如何
-
“一种更有效的方法”是非常开放和模棱两可的,它可能意味着任何东西。也许您需要向您的老师或助教进行澄清。
-
@Someprogrammerdude 我们有一些规范,但我认为这篇文章会变得太大,因为我只是在寻找一般的头条新闻。简而言之,我们必须尽量减少我们需要订购到达
hold(在空中等待)的次数,并“在到达和离开之间交替以提高机场效率”。 -
请编辑您的问题以包含该信息,因为这对于理解问题至关重要。
标签: c multithreading simulation semaphore simulator