我有一个在前台运行的 C++ 应用程序。我需要一个与应用程序同时运行的计时器。当计时器到零时,我需要计时器弹出一个窗口。
我不能使用 sleep() 因为who
应用程序休眠。请就如何做到这一点提出建议。
我有一个在前台运行的 C++ 应用程序。我需要一个与应用程序同时运行的计时器。当计时器到零时,我需要计时器弹出一个窗口。
我不能使用 sleep() 因为who
应用程序休眠。请就如何做到这一点提出建议。
由于您使用的是 C++11,我建议使用thread
库.
您可能想要的是std::this_thread::sleep_for
or std::this_thread::sleep_until
,它可以在您的计时器线程的上下文中调用。
像这样的东西...
std::thread timer([]() {
std::this_thread::sleep_for(std::chrono::seconds(5));
std::cout << "hello, world!" << std::endl;
});
std::cout << "thread begun..." << std::endl;
timer.join();
我建议下载Boost库,然后使用这个非常简单的教程来创建一个 boost 线程。
如果您不想花时间下载/安装/配置 Boost,请使用Windows 线程。(我假设您正在尝试使用sleep()
您在 Windows 上)。不过,Windows 线程比 Boost 线程更难理解。
在实际程序中,您需要包含类似这样的内容(以 Boost 为例):
void timer() {
sleep(x);
//Whatever code here to make your popup window.
return NULL;
}
int main() {
boost::thread prgmTimer(&timer);
//Regular code here.
//prgmTimer.join(); //Remove the comment on that command if you want something to
//to happen after your timer runs down and only if your
//timer runs down. (Ex. the program exits).
return 0;
}