sched_yield()
Yield to other ready threads at the same priority
Synopsis:
#include <sched.h>
int sched_yield( void );
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The sched_yield() function checks to see if other threads, at the same priority as that of the calling thread, are READY to run. If so, the calling thread yields to them and places itself at the end of the READY thread queue. The sched_yield() function never yields to a lower-priority thread.
A higher-priority thread always forces a lower-priority thread to yield (that is, preempt) the instant the higher-priority thread becomes ready to run, without the need for the lower-priority thread to give up the processor by calling the sched_yield() or SchedYield() functions.
The sched_yield() function calls the kernel function SchedYield(), and may be more portable across realtime POSIX systems.
Returns:
This function always succeeds and returns zero.
Examples:
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
int main( void )
{
int i;
for( ;; ) {
/* Process something... */
for( i = 0 ; i < 1000 ; ++i )
fun();
/* Yield to anyone else at the same priority */
sched_yield();
}
return EXIT_SUCCESS; /* Never reached */
}
int fun()
{
int i;
for( i = 0 ; i < 10 ; ++i )
i += i;
return( i );
}
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |