我正在尝试在Visual Studio中创建一个倒数计时器。
我尝试使用"延迟"功能,就好像我正在编写Arduino程序一样,但是错误列表显示这是一个未识别的功能。
std::this_thread::sleep_for
是标准的等价物。 它会在指定的持续时间内挂起当前线程。
之前",等待一秒钟,然后打印"之后":
#include <chrono>
#include <thread>
#include <iostream>
int main() {
std::cout << "Before" << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "After" << std::endl;
}
在事件驱动的上下文(如 GUI 线程(中使用它时要小心,因为它可能会阻止及时处理事件,并导致应用程序挂起或作系统终止。 GUI 工具包通常提供自己的安全替代方案,允许它们继续处理事件并避免该问题。
各种平台 API 也提供了类似的功能。 最常见的是,您会遇到Windows Sleep
或POSIX sleep
,usleep
和nanosleep
。 为了可移植性,最好使用标准std::this_thread::sleep_for
,但如果由于任何原因(使用 C++03 或更早版本、没有标准库等(不可用,则可以使用平台功能。
你的C++标准。
如果您的代码面向 C++11 或更高版本(现在您确实应该这样做(,您可以使用 <thread>
中的std::this_thread::sleep_for
。
如果没有,则没有可移植的方式,您应该使用依赖于平台的功能。