「cpp/thread/yield」の版間の差分
提供: cppreference.com
TranslationBot (トーク | 投稿記録) (Translated from the English version using Google Translate) |
|||
(3人の利用者による、間の4版が非表示) | |||
1行: | 1行: | ||
− | |||
{{cpp/title|n=this_thread::|yield}} | {{cpp/title|n=this_thread::|yield}} | ||
{{cpp/thread/navbar}} | {{cpp/thread/navbar}} | ||
− | {{ddcl | header=thread | | + | {{ddcl | header=thread | sincec++11 | 1= |
− | void yield(); | + | void yield() ; |
}} | }} | ||
− | + | ||
− | === | + | ====== |
− | + | () | |
− | === | + | ====== |
− | {{ | + | |
+ | |||
+ | |||
+ | {{|) }} | ||
===例=== | ===例=== | ||
47行: | 49行: | ||
waited for 128 microseconds | waited for 128 microseconds | ||
}} | }} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ |
2018年4月3日 (火) 14:16時点における最新版
ヘッダ <thread> で定義
|
||
void yield() noexcept; |
(C++11以上) | |
他のスレッドが実行できるように、スレッドの実行を再スケジュールするためのヒントを処理系に提供します。
目次 |
[編集] 引数
(なし)
[編集] 戻り値
(なし)
[編集] ノート
この関数の正確な動作は処理系に、特に使用中の OS のスケジューラの機構やシステムの状態に依存します。 例えば、先入れ先出しのリアルタイムスケジューラ (Linux の SCHED_FIFO
) は、現在のスレッドをサスペンドし、同じ優先度の実行可能なスレッドのキューの末尾に置くでしょう (そしてもし、同じ優先度のスレッドが他になければ、 yield
は効果を持ちません)。
[編集] 例
Run this code
#include <iostream> #include <chrono> #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"; }
出力例:
waited for 128 microseconds
[編集] 関連項目
thrd_yield の C言語リファレンス
|