整理自:zh.cppreference.com/w/cpp/thread

std::this_thread::yield:

定义于头文件 <thread>

函数原型void yield(noexcept;

此函数的准确性为依赖于实现,特别是使用中的 OS 调度器机制和系统状态。例如,先进先出实时调度器( Linux 的 SCHED_FIFO )将悬挂当前线程并将它放到准备运行的同优先级线程的队列尾(而若无其他线程在同优先级,则 yield 无效果)

代码:

 1 #include <iostream>
 2 #include <thread>
 3 #include <chrono>
 4 using namespace std;
 5 
 6 void little_sleep(std::chrono::milliseconds us) {
 7     auto start = std::chrono::high_resolution_clock::now();
 8     auto end = start + us;
 9     do { 
10         std::this_thread::yield();//让出当前时间片
11     }while(std::chrono::high_resolution_clock::now() < end);
12 }
13 
14 int main(void) {
15     auto start = std::chrono::high_resolution_clock::now();//获取当前时间
16 
17     little_sleep(std::chrono::milliseconds(100));
18 
19     auto elapsed = std::chrono::high_resolution_clock::now() - start;//计算执行 little_sleep 所用时间
20 
21     cout << "waited fo "
22             << std::chrono::duration_cast<std::chrono::milliseconds>(elapsed).count() //将 elapsed 时间周期转化为 milliseconds 并输出
23             << " milliseconds\n";
24 
25 // 输出:
26 // waited fo 100 milliseconds
27 
28     return 0;
29 }
View Code

相关文章:

  • 2022-12-23
  • 2022-01-29
  • 2022-12-23
  • 2022-12-23
  • 2022-01-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-27
  • 2022-12-23
  • 2022-12-23
  • 2021-08-18
  • 2021-12-22
  • 2021-11-15
  • 2022-12-23
相关资源
相似解决方案