2009-09-01 65 views
2

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

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

回答

4

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

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

  1. pthread_setschedparam(SCHED_OTHERonly支持)
  2. pthread_getschedparam
  3. pthread_attr_setschedparam
  4. pthread_attr_getschedparam

一个AS/400线程系统中的竞争对抗其他的线程调度资源,而不是仅仅针对其他线程正在进行中。调度器是基于多个延迟成本曲线(优先级范围)的延迟成本调度器。 Posix标准和Single Unix规范将此称为调度范围和调度策略,在此实现中不能从SCHED_OTHER的默认值更改。

2

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