function
<thread>

std::this_thread::yield

void yield() noexcept;
Yield to other threads
The calling thread yields, offering the implementation the opportunity to reschedule.

This function shall be called when a thread waits for other threads to advance without blocking.

Parameters

none

Return value

none

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// this_thread::yield example
#include <iostream> // std::cout
#include <thread> // std::thread, std::this_thread::yield
#include <atomic> // std::atomic
std::atomic<bool> ready (false);
void count1m(int id) {
 while (!ready) { // wait until main() sets ready...
 std::this_thread::yield();
 }
 for (volatile int i=0; i<1000000; ++i) {}
 std::cout << id;
}
int main ()
{
 std::thread threads[10];
 std::cout << "race of 10 threads that count to 1 million:\n";
 for (int i=0; i<10; ++i) threads[i]=std::thread(count1m,i);
 ready = true; // go!
 for (auto& th : threads) th.join();
 std::cout << '\n';
 return 0;
}

Possible output (last line may vary):
race of 10 threads that count to 1 million...
6189370542


Exception safety

No-throw guarantee: never throws exceptions.

See also

sleep_until
Sleep until time point (function)
sleep_for
Sleep for time span (function)

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