Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pthread_create() : What is default priority and shceduling policy

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() ?

like image 513
Lunar Mushrooms Avatar asked Jan 28 '14 05:01

Lunar Mushrooms


1 Answers

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.

like image 133
sonicwave Avatar answered Oct 11 '22 16:10

sonicwave