首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::this_thread::yield

Defined in header <thread>

?

?

void yield();

?

(since C++11)

向实现提供一个提示,以重新安排线程的执行时间,从而允许其他线程运行。

参数

%280%29

返回值

%280%29

例外

noexcept规格:

noexcept

注记

此函数的确切行为取决于实现,特别是在使用中的OS调度程序的机制和系统的状态。例如,先入先出的实时调度程序%28SCHED_FIFO在Linux中,%29将挂起当前线程,并将其放在已准备运行%28的相同优先级线程的队列后面,如果没有具有相同优先级的其他线程,yield无效%29。

二次

代码语言:javascript
复制
#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";
}

二次

可能的产出:

二次

代码语言:javascript
复制
waited for 128 microseconds

二次

另见

C文件[医]产量

*。

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com