【问题标题】:Adding Prioritization To a Thread Without Busy Waiting in C (Linux)在 C (Linux) 中在不忙于等待的情况下向线程添加优先级
【发布时间】:2020-06-26 16:50:15
【问题描述】:

我的作业中有一个优先级问题。一些线程比其他线程具有更高的优先级,而其他线程必须等待访问文件,直到所有这些线程完成它们的工作。我们不允许使用忙等待。有没有另一种解决方案来解决这个问题。谢谢。

【问题讨论】:

  • 这有点乱。要管理的同步对象需要在启动任何高优先级线程之前控制所有低优先级线程。它需要知道高优先级线程的数量。完成文件后,高优先级线程必须调用对象。可以做到....
  • 我的第一个想法是一个带有互斥锁的结构,(为了保护它的内部数据),一个初始化的高低线程总数,一个已经完成文件的高线程计数和一个信号孔低线程在开始文件之前必须等待。
  • 使用 OO 语言会容易得多:)

标签: c linux multithreading synchronization thread-priority


【解决方案1】:

是的,好的,喜欢我的评论。

低优先级线程在访问文件之前必须等待(初始化为零)信号量。高优先级线程在完成 tbe 文件后,必须获取互斥锁,将高计数检查归零并释放互斥锁。最后一个找到零的高线程应该向信号量发出 [low count] 单元,因此释放所有低线程。

实际上,具有状态数据的受互斥体保护的结构几乎可以处理您的教授提出的任何奇怪的锁定/排序/优先排序方案,无论它首先消耗多少龙舌兰酒:)

【讨论】:

    猜你喜欢
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多