c++ - 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 括号内的数字。它正在运行循环,只是在睡眠完成之前不打印数字。???
解决方案
输出被缓冲。你看不到这些点,但它们像发条一样发出。
如果你添加
fflush(stdout);
或输出字符串的换行符,您应该会看到点定期出现。
推荐阅读
- javascript - 如何通过 Javascript 将高分记录到不同的 HTML 页面
- c - What types of error when using the wrong format specifier in printf
- c# - How to create issue in jira using c#
- sql - Recursive CTE sql query for calculating Rolling returns
- r - Error in Random Forest implementation using R
- python - Recompile Python 3.8 with statically linked OpenSSL on Windows
- c# - 从 ASP.NET Core 3 应用程序执行 Linux Shell 命令
- mongodb - MongoDB: Is it possible to combine 2 requests into one?
- python-3.x - how to capture a child pattern in a parent pattern
- mysql - How to count concurrently bookings in sql in time interval per minute by booking type?