【发布时间】:2011-03-17 21:07:19
【问题描述】:
假设以下代码由 10 个线程执行。
pthread_mutex_lock(&lock)
Some trivial code
pthread_mutex_unlock(&lock)
为了便于解释,假设线程是 T1、T2、T3.....T10。 我的要求是,只要 T1 或 T2 或 T3(即 T1、T2 或 T3 中的任何一个)正在等待获取锁,它 T4、T5、T6 .....T10 的其他线程应该无法获取锁,即 T1、T2 和 T3 应该优先于其他线程获取锁。
我想这可以通过增加线程T1、T2和T3的优先级来完成
这里是伪代码
if this thread is T1 or T2 or T3
increase its priority
pthread_mutex_lock(&lock)
Some trivial code
pthread_mutex_unlock(&lock)
if this thread is T1 or T2 or T3 decrease it priority to normal
请注意,我想要一个适用于 Linux 平台并且应该使用 pthreads 的解决方案。我真的不关心任何其他平台。
另外请注意,我真的不想让这 3 个线程成为实时线程,我希望它们展示它们的默认行为(调度和优先级),除了在上面提到的一小段代码中我希望它们始终具有优先权在获取锁。
我已经阅读了一些关于 Linux 中调度策略和调度优先级的手册页,但无法真正理解:(
这行得通吗?您能帮我了解完成上述任务所需的确切 pthread API 吗?
问候 拉里
【问题讨论】:
-
考虑添加标签“c”,因为只有少数开发人员会查看没有编程语言标签的问题。
-
非常感谢,是的,它类似于读写锁的实现。谢谢大家:)
标签: c linux multithreading pthreads