【问题标题】:How to solve this C/Linux exercise? [closed]如何解决这个 C/Linux 练习? [关闭]
【发布时间】:2014-03-14 05:13:53
【问题描述】:

我还没有清楚地理解下面的 C/Linux 练习:

练习:

考虑到以下依赖关系图,它表达了程序的 4 个任务之间的依赖关系:

我们想要创建 4 个进程(S1 到 S4),它们将并行执行,以自动化上面的依赖图。每个过程 Si 将基于下面的模型 1:

提出解决方案并明确证明其合理性。

如果有人理解这个练习,请随时解释。感谢您的帮助!

【问题讨论】:

  • 在这样的优先级图中,T5 是否必须等待 T2 和 T3 都完成,或者它可以在其中一个完成后立即运行?我天真地认为前者,但你的逻辑对应于后一种情况。
  • 1.) 请不要张贴代码图片,而是输入代码并(最好)使用代码标签。 2.) 你想出了什么代码并尝试过? SO 社区通常不会在没有发帖人完成的情况下编写其他家庭作业/练习。
  • 您不能删除这样的内容。人们已经回答了。破坏你的问题会使他们的答案无效。如果你不希望它在线,你不应该问这个问题。通过在此处发布它,您已经不可撤销地永久地将内容授权给该网站。请将其留在原处。

标签: c linux


【解决方案1】:

你的代码的问题是你必须把那些 if 放在一个循环中,所以你不断地检查前一个任务是否已经完成。因此,您会在经常出错的测试中浪费时间。

最好使用信号量来同步这些进程:如果信号量计数为 0,则线程将被挂起,并在上一个任务完成时再次自动唤醒。

例如,对于进程 P2,您可以使用:

sem_wait(sem_1)
T2
sem_post(sem_2)

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多