睡眠:(睡眠或usleep)不是在Linux中挂起线程中的所有内容,而是在Windows中?为什么?

时间:2019-07-01 21:50:41

标签: 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。它正在运行循环,只是直到睡眠完成才打印出数字。 ????

1 个答案:

答案 0 :(得分:1)

输出被缓冲。您看不到圆点,但它们像发条一样发出。

如果添加

fflush(stdout); 

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