pthread调度方法?

时间:2009-09-01 13:03:31

标签: pthreads unix

没有明确的调度,pthread被安排由内核以随机方式运行。

pthread库中是否有相同的调度方法,例如优先级?

2 个答案:

答案 0 :(得分:4)

将线程的优先级指定为增量,该增量将添加到进程的优先级。更改进程的优先级会影响该进程中所有线程的优先级。线程的默认优先级是DEFAULT_PRIO_NP,它与进程优先级没有任何变化。

这些Pthread API仅支持SCHED_OTHER的调度策略。

  1. pthread_setschedparam(支持SCHED_OTHERonly)
  2. pthread_getschedparam
  3. pthread_attr_setschedparam
  4. pthread_attr_getschedparam
  5. AS / 400线程竞争针对系统中其他线程的资源调度,而不仅仅是针对进程中的其他线程。调度器是基于若干延迟成本曲线(优先级范围)的延迟成本调度器。 Posix标准和单Unix规范将此称为调度范围和调度策略,在此实现中无法从默认的SCHED_OTHER更改。

答案 1 :(得分:2)

可以稍微控制一下。对于具有相同优先级的线程,pthreads标准指定FIFO的选择(线程运行直到它阻塞或退出),循环(线程运行一段固定的时间)或默认的“其他”。标准所要求的唯一一个是“其他”,其行为依赖于实现,但通常是FIFO和循环的组合(例如,线程运行直到它阻塞,退出或时间片用完,无论哪个先发生)。 p>