「cpp/thread/yield」の版間の差分
提供: cppreference.com
細 (Fix some translations) |
|||
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 | ||
}} | }} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
[[de:cpp/thread/yield]] | [[de:cpp/thread/yield]] |
2018年4月3日 (火) 04:44時点における版
ヘッダ <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言語リファレンス
|