Arduino "delay"函数的常规c ++等价物是什么?

What is the regular c++ equivalent of the Arduino "delay" function?

本文关键字:等价物 是什么 常规 delay 函数 Arduino      更新时间:2023-10-16

我正在尝试在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 sleepusleepnanosleep。 为了可移植性,最好使用标准std::this_thread::sleep_for,但如果由于任何原因(使用 C++03 或更早版本、没有标准库等(不可用,则可以使用平台功能。

这取决于

你的C++标准。

如果您的代码面向 C++11 或更高版本(现在您确实应该这样做(,您可以使用 <thread> 中的std::this_thread::sleep_for

如果没有,则没有可移植的方式,您应该使用依赖于平台的功能。