| .\" Copyright (C) Tom Bjorkholm & Markus Kuhn, 1996 |
| .\" |
| .\" %%%LICENSE_START(GPLv2+_DOC_FULL) |
| .\" This is free documentation; you can redistribute it and/or |
| .\" modify it under the terms of the GNU General Public License as |
| .\" published by the Free Software Foundation; either version 2 of |
| .\" the License, or (at your option) any later version. |
| .\" |
| .\" The GNU General Public License's references to "object code" |
| .\" and "executables" are to be interpreted as the output of any |
| .\" document formatting or typesetting system, including |
| .\" intermediate and printed output. |
| .\" |
| .\" This manual is distributed in the hope that it will be useful, |
| .\" but WITHOUT ANY WARRANTY; without even the implied warranty of |
| .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| .\" GNU General Public License for more details. |
| .\" |
| .\" You should have received a copy of the GNU General Public |
| .\" License along with this manual; if not, see |
| .\" <http://www.gnu.org/licenses/>. |
| .\" %%%LICENSE_END |
| .\" |
| .\" 1996-04-01 Tom Bjorkholm <tomb@mydata.se> |
| .\" First version written |
| .\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de> |
| .\" revision |
| .\" |
| .TH SCHED_YIELD 2 2017-09-15 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| sched_yield \- yield the processor |
| .SH SYNOPSIS |
| .B #include <sched.h> |
| .PP |
| .B int sched_yield(void); |
| .SH DESCRIPTION |
| .BR sched_yield () |
| causes the calling thread to relinquish the CPU. |
| The thread is moved to the end of the queue for its static |
| priority and a new thread gets to run. |
| .SH RETURN VALUE |
| On success, |
| .BR sched_yield () |
| returns 0. |
| On error, \-1 is returned, and |
| .I errno |
| is set appropriately. |
| .SH ERRORS |
| In the Linux implementation, |
| .BR sched_yield () |
| always succeeds. |
| .SH CONFORMING TO |
| POSIX.1-2001, POSIX.1-2008. |
| .SH NOTES |
| If the calling thread is the only thread in the highest |
| priority list at that time, |
| it will continue to run after a call to |
| .BR sched_yield (). |
| .PP |
| POSIX systems on which |
| .BR sched_yield () |
| is available define |
| .B _POSIX_PRIORITY_SCHEDULING |
| in |
| .IR <unistd.h> . |
| .PP |
| Strategic calls to |
| .BR sched_yield () |
| can improve performance by giving other threads or processes |
| a chance to run when (heavily) contended resources (e.g., mutexes) |
| have been released by the caller. |
| Avoid calling |
| .BR sched_yield () |
| unnecessarily or inappropriately |
| (e.g., when resources needed by other |
| schedulable threads are still held by the caller), |
| since doing so will result in unnecessary context switches, |
| which will degrade system performance. |
| .PP |
| .BR sched_yield () |
| is intended for use with real-time scheduling policies (i.e., |
| .BR SCHED_FIFO |
| or |
| .BR SCHED_RR ). |
| Use of |
| .BR sched_yield () |
| with nondeterministic scheduling policies such as |
| .BR SCHED_OTHER |
| is unspecified and very likely means your application design is broken. |
| .SH SEE ALSO |
| .BR sched (7) |