pthread_create():什么是默认优先级和调度策略

时间:2014-01-28 05:15:10

标签: linux gcc pthreads nptl

HP手册页(link)说

  

“默认情况下,新线程的调度策略和优先级是   继承自创建线程---即默认情况下   pthread_create(3)例程忽略调度策略和优先级   在指定的线程属性对象中设置。因此,创造一个   受调度策略和优先级设置的线程   调用之前指定的线程属性对象   pthread_create(3)你的程序必须使用   pthread_attr_setinheritsched(3)例程设置继承线程
  属性对象的调度属性为PTHREAD_EXPLICIT_SCHED。“

这适用于Linux posix线程(NPTL pthread)吗?

如果没有,影响使用pthread_create()创建的线程的优先级和调度策略的因素是什么?

1 个答案:

答案 0 :(得分:4)

来自here

  

可以在inheritsched中指定以下值:

     

PTHREAD_INHERIT_SCHED   使用attr创建的线程从创建线程继承调度属性; attr中的调度属性被忽略。

     

PTHREAD_EXPLICIT_SCHED   使用attr创建的线程从属性对象指定的值中获取其调度属性。

     

新初始化的线程属性对象中的inherit scheduler属性的默认设置是PTHREAD_INHERIT_SCHED。

所以,似乎与问题中描述的行为相同。

我实际上认为这样的默认值可以由标准定义(虽然我没有那么多经验),但是看看Thread Scheduling Attributes部分的最后一行:

  

(...)其他调度属性的默认值是实现定义的。