放弃CPU时间

tmp*_*128 0 c c++ cpu

在 C/C++ 中是否有可能“放弃”线程的 CPU 时间?例如:

void wait(int s) //Low cpu usage
{
 int tmp = time();
 while(tmp + CLOCKS_PER_SEC * s > time())
  __AbandonCPUTime();
  //Tell cpu to do sth else.
}
Run Code Online (Sandbox Code Playgroud)

我试过 Sleep(0),但它不起作用。

Jam*_*mes 5

看看 C++11 的:

#include <thread>
std::this_thread::yield();
Run Code Online (Sandbox Code Playgroud)

您的 CPU 可能支持_mm_pause()内在的(__asm__("pause")对于 gcc),这可能对您有帮助,也可能无济于事。

否则,您将查看操作系统特定的功能: sched_yield()用于 Linux 或SwitchToThread()Windows上的 pthread