[Return to Bookshelf] [Contents] [Previous Section] [Next Section] [Index] [Help]


pthread_setprio

Changes the current priority of a thread.

Syntax

pthread_setprio(
                thread,
                priority );
 


Argument Data Type Access

thread opaque pthread_t read priority integer read


C Binding

int
pthread_setprio (
pthread_t thread,
int priority);

Arguments

thread
Thread whose priority is changed.
priority
New priority value of the thread specified in thread. The priority value is dependent upon scheduling policy. Valid values fall within one of the following ranges.
Low                 High

PRI_FIFO_MIN PRI_FIFO_MAX PRI_RR_MIN PRI_RR_MAX PRI_OTHER_MIN PRI_OTHER_MAX PRI_FG_MIN_NP PRI_FG_MAX_NP PRI_BG_MIN_NP PRI_BG_MAX_NP


If you create a new thread without specifying a threads attributes object that contains a changed priority attribute, the default priority of the newly created thread is the midpoint between PRI_OTHER_MIN and PRI_OTHER_MAX (the midpoint between the minimum and the maximum for the SCHED_OTHER policy). (Section 2.7 describes how to specify priorities between the minimum and maximum values.)

Description

This routine changes the current priority of a thread. A thread can change its own priority using the identifier returned by pthread_self.

Changing the priority of a thread can cause it to start executing or be preempted by another thread. The effect of setting different priority values depends on the scheduling priority assigned to the thread. The initial scheduling priority is set by calling the pthread_attr_setprio routine.

An application should specify priority only to express the urgency of executing the thread relative to other threads. Priority should not be used to control mutual exclusion when accessing shared data. With a sufficient number of processors executing, all ready threads, regardless of priority, can be executing simultaneously.

The pthread_attr_setprio routine sets the priority attribute that is used to establish the priority of a new thread when it is created. However, pthread_setprio changes the priority of an existing thread.

Return Values

The previous priority of the thread specified in thread is returned.

If an error condition occurs, this routine returns -1 and sets errno to the corresponding error value. Possible return values are as follows:


Return  Error         Description

Priority Successful completion. value -1 [EINVAL] The value specified by priority is invalid. -1 [ENOTSUP] An attempt is made to set the policy to an unsupported value. -1 [ESRCH] The value specified by thread does not refer to an existing thread. -1 [EPERM] The caller does not have the appropriate privileges to set the priority of the specified thread.



[Return to Bookshelf] [Contents] [Previous Section] [Next Section] [Index] [Help]