c++ - Arduino“延迟”功能的常规 c++ 等价物是什么?
问题描述
我正在尝试在 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 也提供了类似的功能。最常见的是您会遇到 WindowsSleep
或 POSIX sleep
、usleep
和nanosleep
. 对于可移植性,使用标准是一个好主意std::this_thread::sleep_for
,但是如果由于某种原因(使用 C++03 或更早版本,没有标准库等)不可用,则可以使用平台函数。
推荐阅读
- flutter - FlutteEasyLocalization 不适用于 RestartWidget
- plotly - 如何让 Plotly 根据 Streamlit 应用程序中的屏幕分辨率调整绘图大小?
- java - 是否有在 Java 中运行具有静态变量的类的多个实例的解决方法?
- matlab - 避免使用 Matlab 循环来增加价值
- json - 如何处理分区 Couchdb 数据库中视图的索引?
- amazon-web-services - “s3:PutObject*”和“s3:PutObject”有什么区别?
- node.js - 如何从另一个调用同一个对话框的对话框中调用一个对话框?
- javascript - 嵌套数组不会在 Vue3 模板中呈现
- python - 为什么我无法重现 Keras 结果?
- javascript - jQuery无法添加元素