pthread_create() : What is default priority and shceduling policy

5.9k views Asked by At

The HP man page (link) says

"By default, the new thread's scheduling policy and priority are inherited from the creating thread---that is, by default, the pthread_create(3) routine ignores the scheduling policy and priority set in the specified thread attributes object. Thus, to create a thread that is subject to the scheduling policy and priority set in the specified thread attributes object, before calling pthread_create(3) your program must use the pthread_attr_setinheritsched(3) routine to set the inherit thread
attributes object's scheduling attribute to PTHREAD_EXPLICIT_SCHED."

Is this hold true for Linux posix thread (NPTL pthread) ?

If not, what are the factors affecting priority and scheduling policy of a thread created using pthread_create() ?

1

There are 1 answers

0
sonicwave On BEST ANSWER

From here:

The following values may be specified in inheritsched:

PTHREAD_INHERIT_SCHED Threads that are created using attr inherit scheduling attributes from the creating thread; the scheduling attributes in attr are ignored.

PTHREAD_EXPLICIT_SCHED Threads that are created using attr take their scheduling attributes from the values specified by the attributes object.

The default setting of the inherit scheduler attribute in a newly initialized thread attributes object is PTHREAD_INHERIT_SCHED.

So, seems to be the same behavior as the one described in the question.

I would actually have thought that such a default value could be defined by the standard (without having that much experience with that though, I'll admit), but looking at the last line of the Thread Scheduling Attributes section:

(...) The default values of other scheduling attributes are implementation-defined.