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

标签 c++

我正在尝试在 Visual Studio 中创建倒计时器。

我尝试使用“延迟”函数,就像编写 Arduino 程序一样,但错误列表显示这是一个无法识别的函数。

最佳答案

std::this_thread::sleep_for是标准等效值。它将当前线程挂起指定的持续时间。

例如,这将打印“Before”,等待一秒钟,然后打印“After”:

#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++ - Arduino "delay"函数的常规 C++ 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56604638/

相关文章:

c++ - 我如何在 c 中读取一个巨大的 .gz 文件(超过 5 gig 未压缩)

c++ - SWIG Python 到 C++ : TypeError trying to set struct member of type map<string, int>

c++ - 欧几里得算法函数参数

c++ - 在 C++ 控制台应用程序中显示动态值

c++ - C++中的哈希表错误

c++ - 为什么包含头文件是一件邪恶的事情?

c++ - 动态内存分配中使用的堆和数据结构有什么关系?

c++ - Boost ASIO 用于 OS X 上的高波特率串口

c++ - 如何在连接所有客户端套接字的情况下关闭boost asio服务器套接字

C++ - 从没有自定义 .lib 文件的 Lua C 模块调用 Lua 函数