首页 > 解决方案 > SLEEP:(Sleep 或 usleep)没有在 Linux 中暂停我的线程中的所有内容,但在 Windows 中会暂停?为什么?

问题描述

在 Windows 中:

    for (int i = 0; i < 100; i++)
    {
      Sleep(100);    // Sleep 100 ms in Windows
      printf(".[%d] ", i);
    }

结果是在 Windows 中每 100 毫秒出现一个带括号的数字。

在 Linux 中:

    for (int i = 0; i < 100; i++)
    {
      usleep(100000);    // Sleep 100 ms in Linux 
      printf(".[%d] ", i);
    }

结果是在 Linux 中每 100 毫秒出现一个 GROUP ob 括号内的数字。它正在运行循环,只是在睡眠完成之前不打印数字。???

标签: c++linuxwindowssleepusleep

解决方案


输出被缓冲。你看不到这些点,但它们像发条一样发出。

如果你添加

fflush(stdout); 

或输出字符串的换行符,您应该会看到点定期出现。


推荐阅读