Namespaces
Variants
Actions

std::this_thread::yield

From cppreference.com
< cpp‎ | thread
 
 
Concurrency support library
(C++11)
(C++20)
(C++11)
yield
(C++11)
(C++11)
(C++11)
(C++11)
(C++17)
(C++11)
(C++11)
(C++17)
(C++11)
(C++14)
(C++11)
(C++11)
(C++11)
(C++11)
(C++20)
(C++20)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++26)
(C++26)
(C++26)
(C++26)
(C++11)
(C++20)
(C++11)
(C++11)(deprecated in C++20)
(C++11)(deprecated in C++20)
(C++11)
(C++11)(deprecated in C++26)
 
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.

[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 time
void 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 for thrd_yield
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/thread/yield&oldid=176867"

AltStyle によって変換されたページ (->オリジナル) /