std::this_thread::yield/sleep_for

 

std::this_thread::yield(): 当前线程放弃执行,操作系统调度另一线程继续执行。
std::this_thread::sleep_for(): 表示当前线程休眠一段时间,休眠期间不与其他线程竞争CPU,根据线程需求,等待若干时间。

 

#include <iostream>
#include <chrono>
#include <thread>

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";

    system("pause");
}

 

posted @ 2019-06-24 22:34  osbreak  阅读(2055)  评论(0编辑  收藏  举报