在 C++ 中,sleep(0) 并不会真正让线程休眠 0 秒。相反,它会暂停当前线程,使得其他线程有机会在当前线程之后执行。这在多线程环境中常用于实现一种简单的自旋锁。
当你调用 sleep(0) 时,它会让当前线程放弃 CPU 使用权,让其他线程执行。因此,如果其他线程有待执行的任务,CPU 占用率可能会下降。
在很多操作系统中,sleep(0) 不是真正的休眠,它会将当前线程放入到就绪队列中,这样操作系统就可以调度其他就绪状态的线程执行。因此,调用 sleep(0) 可以实现一种主动让出 CPU 的效果,让其他线程有更多的机会执行。
如果你想确保当前线程休眠一定的时间,可以使用 sleep 函数的参数来指定休眠的秒数。
#include <iostream>
#include <thread> // std::this_thread::sleep_for(std::chrono::seconds(2));
#include <unistd.h> // 包含 sleep 函数
int main()
{while (true){std::this_thread::sleep_for(std::chrono::seconds(0));//sleep(0);std::cout << "=================" << std::endl;}
}