【发布时间】:2014-11-30 16:55:30
【问题描述】:
我正在做一个需要从文件中读取数据的项目。
但在打开文件之前我想显示Loading . . . . .
我希望“加载”后的点在大约 2-3 秒后一个一个地打印出来,然后显示我的文件内容。也就是说,在前 3 秒后显示 Loading .,再过 3 秒后显示 Loading . .,依此类推。
我找不到方法,请帮忙。
【问题讨论】:
我正在做一个需要从文件中读取数据的项目。
但在打开文件之前我想显示Loading . . . . .
我希望“加载”后的点在大约 2-3 秒后一个一个地打印出来,然后显示我的文件内容。也就是说,在前 3 秒后显示 Loading .,再过 3 秒后显示 Loading . .,依此类推。
我找不到方法,请帮忙。
【问题讨论】:
这取决于平台。
在 Windows 上,您可以使用Sleep() 函数:
Sleep(3000);
参数是以毫秒为单位的时间量。您需要包含 windows.h 才能使用此功能。
在与 POSIX 兼容的情况下,您可以使用 sleep():
sleep(3); // parameter is in seconds
如果你需要更好的精度,你可以使用 usleep():
usleep(3000000); // parameter is in microseconds
这两个函数都需要包含 unistd.h
【讨论】:
在 c++11 中,您可以创建一个在睡眠 3 秒时循环并在读取文件之前打印点的线程。您必须使用互斥锁保护的条件或变量来退出线程。
【讨论】:
2个基本解决方案:
1 使用 usleep() 的 sleep() 来阻止它。 2.使用while循环让cpu忙循环。
在生产中,我们通常会做第一个解决方案。但请始终保持谨慎。确保这是你想要做的。
另一种方式是, 使用事件循环方法并为此事件设置计时器。定时器超时后可以稍后运行
【讨论】:
在 C++11 中,您可以使用:
#include <chrono>
#include <thread>
...
using namespace std::chrono_literals;
...
std::this_thread::sleep_for(2s);
【讨论】: