Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      thrd_yield

      From cppreference.com
      <c‎ |thread
       
       
      Concurrency support library
       
      Defined in header<threads.h>
      void thrd_yield(void);
      (since C11)

      Provides a hint to the implementation to reschedule the execution of threads, allowing other threads to run.

      Contents

      [edit]Parameters

      (none)

      [edit]Return value

      (none)

      [edit]Notes

      The exact behavior of this function depends on the implementation, in particular on the mechanics of the OS scheduler in use and the state of the system. For example, a first-in-first-out realtime scheduler (SCHED_FIFO in Linux) would suspend the current thread and put it on the back of the queue of the same-priority threads that are ready to run, and if there are no other threads at the same priority,yield has no effect.

      The POSIX equivalent of this function issched_yield.

      [edit]Example

      Run this code
      #include <stdio.h>#include <time.h>#include <threads.h> // utility function: difference between timespecs in microsecondsdouble usdiff(struct timespec s,struct timespec e){double sdiff=difftime(e.tv_sec, s.tv_sec);long nsdiff= e.tv_nsec- s.tv_nsec;if(nsdiff<0)return1000000*(sdiff-1)+(1000000000L+nsdiff)/1000.0;elsereturn1000000*(sdiff)+ nsdiff/1000.0;} // busy wait while yieldingvoid sleep_100us(){struct timespec start, end;    timespec_get(&start, TIME_UTC);do{        thrd_yield();        timespec_get(&end, TIME_UTC);}while(usdiff(start, end)<100.0);} int main(){struct timespec start, end;    timespec_get(&start, TIME_UTC);    sleep_100us();    timespec_get(&end, TIME_UTC);printf("Waited for %.3f us\n", usdiff(start, end));}

      Possible output:

      Waited for 100.344 us

      [edit]References

      • C17 standard (ISO/IEC 9899:2018):
      • 7.26.5.8 The thrd_yield function (p: 281)
      • C11 standard (ISO/IEC 9899:2011):
      • 7.26.5.8 The thrd_yield function (p: 385)

      [edit]See also

      suspends execution of the calling thread for the given period of time
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/thread/thrd_yield&oldid=176868"

      [8]ページ先頭

      ©2009-2025 Movatter.jp