sched_yield - Signals scheduler a willingness to yield to
another thread
#include <pthread.h>
void sched_yield(
void );
DECthreads POSIX 1003.1c Library (libpthread.so)
Interfaces documented on this reference page conform to
industry standards as follows:
IEEE Std 1003.1c-1995, POSIX System Application Program
Interface
None
This routine forces the running thread to relinquish the
processor until it again becomes the head of its thread
list. This routine notifies the thread scheduler that the
current thread is willing to release its processor to
other threads of equivalent or greater scheduling precedence.
(A thread generally will release its processor to a
thread of a greater scheduling precedence without calling
this routine.) If no other threads of equivalent or
greater scheduling precedence are ready to execute, the
thread continues.
This routine can allow knowledge of the details of an
application to be used to improve its performance. If a
thread does not call sched_yield, other threads may be
given the opportunity to run at arbitrary points (possibly
even when the interrupted thread holds a required
resource). By making strategic calls to sched_yield,
other threads can be given the opportunity to run when the
resources are free. This can sometimes improve performance
by reducing contention for the resource.
As a general guideline, consider calling this routine
after a thread has released a resource (such as a mutex)
that is heavily contended for by other threads. This can
be especially important if the program is running on a
uniprocessor machine, or if the thread acquires and
releases the resource inside a tight loop.
Use this routine carefully and sparingly, because misuse
can cause unnecessary context switching which will
increase overhead and degrade performance. For example, it
is counter-productive for a thread to yield while it holds
a resource that the threads to which it is yielding will
need. Likewise, it is pointless to yield unless there is
likely to be another thread that is ready to run.
None
Functions: pthread_attr_setschedparam(3),
pthread_setschedparam(3)
Manuals: Guide to DECthreads and Programmer's Guide
sched_yield(3)
[ Back ] |