HP手册页(link)说
“默认情况下,新线程的调度策略和优先级是 继承自创建线程---即默认情况下 pthread_create(3)例程忽略调度策略和优先级 在指定的线程属性对象中设置。因此,创造一个 受调度策略和优先级设置的线程 调用之前指定的线程属性对象 pthread_create(3)你的程序必须使用 pthread_attr_setinheritsched(3)例程设置继承线程
属性对象的调度属性为PTHREAD_EXPLICIT_SCHED。“
这适用于Linux posix线程(NPTL pthread)吗?
如果没有,影响使用pthread_create()创建的线程的优先级和调度策略的因素是什么?
答案 0 :(得分:4)
来自here:
可以在inheritsched中指定以下值:
PTHREAD_INHERIT_SCHED 使用attr创建的线程从创建线程继承调度属性; attr中的调度属性被忽略。
PTHREAD_EXPLICIT_SCHED 使用attr创建的线程从属性对象指定的值中获取其调度属性。
新初始化的线程属性对象中的inherit scheduler属性的默认设置是PTHREAD_INHERIT_SCHED。
所以,似乎与问题中描述的行为相同。
我实际上认为这样的默认值可以由标准定义(虽然我没有那么多经验),但是看看Thread Scheduling Attributes部分的最后一行:
(...)其他调度属性的默认值是实现定义的。