首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sched_yield调度策略运行的线程对SCHED_RR ()的影响

使用sched_yield调度策略运行的线程对SCHED_RR ()的影响
EN

Stack Overflow用户
提问于 2015-08-30 20:18:45
回答 1查看 487关注 0票数 0

我在Linux下有一个进程,它由两个线程组成,一个是生产者,一个是使用者。为了简单起见,假设这是系统中运行在单核单CPU体系结构上的唯一进程。

首先创建生产者,并使用sched_setscheduler(0, SCHED_RR, &params)手动分配一个sched_setscheduler(0, SCHED_RR, &params)调度策略。过了一段时间,消费线程也被创建了。由于它是在为生产者调用sched_setscheduler之后创建的,因此它没有相同的SCHED_RR调度策略集。

在这种情况下,我试图从生产者(一旦产生一个元素)了解sched_yield()的影响。

有两种可能性,但我不确定哪一种是真的:

  1. 在生产者再次运行之前,可能计划执行使用者。
  2. 消费者无法计划执行,因为它没有与SCHED_RR调度策略和一起运行,生产者没有完成分配的量程时间或没有sleep。在这种情况下,yield()可能会产生负面影响,因为这是没有意义的。
EN

回答 1

Stack Overflow用户

发布于 2015-08-30 23:01:02

虽然我不确定在实践中会发生什么,但形式上sched_yield不允许在这种情况下运行较低优先级的线程;它只是为了屈服于相同优先级的线程。

您应该使用条件变量或其他适当的同步机制来确保您的使用者能够运行(生产者应该在谓词上pthread_cond_wait,即队列超过了某个完全阈值或类似值),而不是试图进行基于睡眠/产量的调度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32300741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档