std::this_thread::yield
STD:这个[医]螺纹::屈服
Defined in header | | |
---|---|---|
void yield( | | (since C++11) |
向实现提供一个提示,以重新安排线程的执行时间,从而允许其他线程运行。
参数
%280%29
返回值
%280%29
例外
noexcept
规格:
noexcept
注记
此函数的确切行为取决于实现,特别是在使用中的OS调度程序的机制和系统的状态。例如,先入先出的实时调度程序%28SCHED_FIFO
在Linux中,%29将挂起当前线程,并将其放在已准备运行%28的相同优先级线程的队列后面,如果没有具有相同优先级的其他线程,yield
无效%29。
例
二次
#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
二次
另见
C文件[医]产量
*。
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。