简体   繁体   中英

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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM