c++ - SLEEP: (Sleep or usleep) 不是在 Linux 中挂起我线程中的所有内容,而是在 Windows 中?为什么?

标签 c++ linux windows sleep usleep

在 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 括号内的数字。它正在运行循环,只是在 sleep 完成之前不打印出数字。 ????

最佳答案

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

如果你添加

fflush(stdout); 

或输出字符串的换行符,您应该会看到这些点有规律地出现。

关于c++ - SLEEP: (Sleep or usleep) 不是在 Linux 中挂起我线程中的所有内容,而是在 Windows 中?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842886/

相关文章:

python - 除了交换系统变量 'PATH' 中 python 文件夹的路径顺序之外,还有哪些方法可以交换 python 版本?

c++ - 为什么结构的 sizeof 不等于每个成员的 sizeof 之和?

c++ - 在使用小数的简单 C++ 程序中遇到问题。

用于 TCP 套接字的基于 C++ 流的 JSON 解析器

linux - 计算多行中某个字段的出现次数

regex - 如何使用正则表达式在 Unix 中搜索文件?

windows - 如何从资源加载图标而不会出现别名?

c++ - 使用 C++ 检测惯用语计算任意可调用对象的参数

linux - 在现有 RPM 中添加新文件

c# - TFS C# API : Workspace. PendAdd 静默失败