std::this_thread:: yield
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<thread>
|
||
|
void
yield
(
)
noexcept
;
|
(depuis C++11) | |
Fournit une indication à l'implémentation pour reprogrammer l'exécution des threads, permettant à d'autres threads de s'exécuter.
Table des matières |
Paramètres
(aucun)
Valeur de retour
(aucun)
Notes
Le comportement exact de cette fonction dépend de l'implémentation, en particulier de la mécanique de l'ordonnanceur du système d'exploitation utilisé et de l'état du système. Par exemple, un ordonnanceur temps réel premier entré, premier sorti (
SCHED_FIFO
sous Linux) suspendrait le thread actuel et le placerait à la fin de la file des threads de même priorité prêts à s'exécuter, et s'il n'y a pas d'autres threads à la même priorité,
yield
n'a aucun effet.
Exemple
#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"; }
Sortie possible :
waited for 128 microseconds
Voir aussi
|
Documentation C
pour
thrd_yield
|