在线文档教程
C++
线程支持 | Thread support

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。

http://en.cppreference.com/w/cpp/线程/产率