Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::this_thread::yield

      From cppreference.com
      <cpp‎ |thread
       
       
      Concurrency support library
      Threads
      (C++11)
      (C++20)
      this_thread namespace
      (C++11)
      yield
      (C++11)
      (C++11)
      Cooperative cancellation
      Mutual exclusion
      Generic lock management
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Condition variables
      (C++11)
      Semaphores
      Latches and Barriers
      (C++20)
      (C++20)
      Futures
      (C++11)
      (C++11)
      (C++11)
      Safe reclamation
      Hazard pointers
      Atomic types
      (C++11)
      (C++20)
      Initialization of atomic types
      (C++11)(deprecated in C++20)
      (C++11)(deprecated in C++20)
      Memory ordering
      (C++11)(deprecated in C++26)
      Free functions for atomic operations
      Free functions for atomic flags
       
      Defined in header<thread>
      void yield()noexcept;
      (since C++11)

      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.

      [edit]Example

      Run this code
      #include <chrono>#include <iostream>#include <thread> // "busy sleep" while suggesting that other threads run// for a small amount of timevoid little_sleep(std::chrono::microseconds us){auto start=std::chrono::high_resolution_clock::now();auto end= start+ us;do{        std::this_thread::yield();}while(std::chrono::high_resolution_clock::now()< end);} int main(){auto start=std::chrono::high_resolution_clock::now();     little_sleep(std::chrono::microseconds(100)); auto elapsed=std::chrono::high_resolution_clock::now()- start;std::cout<<"waited for "<<std::chrono::duration_cast<std::chrono::microseconds>(elapsed).count()<<" microseconds\n";}

      Possible output:

      waited for 128 microseconds

      [edit]See also

      C documentation forthrd_yield
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/thread/yield&oldid=176867"

      [8]ページ先頭

      ©2009-2025 Movatter.jp