Arduino“延迟”功能的常规c ++等效项是什么?

时间:2019-06-14 20:17:05

标签: c++

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

我已经尝试过使用“延迟”功能,就好像我正在编写Arduino程序一样,但是错误列表显示这是一个无法识别的功能。

2 个答案:

答案 0 :(得分:1)

std::this_thread::sleep_for是等效的标准。它将在指定的时间内暂停当前线程。

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

@inferred

在事件驱动的上下文(例如GUI线程)中谨慎使用此功能,因为它可能阻止及时处理事件并导致应用程序挂起或被OS杀死。 GUI工具箱通常提供自己的安全替代方案,使它们能够继续处理事件并避免该问题。


各种平台API也提供了类似的功能。通常,您会遇到Windows Sleep或POSIX sleepusleepnanosleep。出于可移植性考虑,最好使用标准#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; } ,但如果由于某种原因(使用C ++ 03或更早版本,没有标准库等)而无法使用平台功能,则可以使用平台功能。

答案 1 :(得分:1)

这取决于您的C ++标准。

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

如果没有,则没有可移植的方法,您应该使用平台相关的功能。