【问题标题】:Pause program execution for 5 seconds in c++在 C++ 中暂停程序执行 5 秒
【发布时间】:2014-05-12 12:48:01
【问题描述】:

我想暂停 c++ 程序的执行 5 秒。在android Handler.postDelayed 具有我正在寻找的所需功能。 c++中有没有类似的东西?

【问题讨论】:

  • #include unsigned int sleep(unsigned int seconds);
  • 请问您为什么要暂停程序?有时,存在有意义/更好的替代方案。

标签: c++


【解决方案1】:
#include <iostream>
#include <chrono>
#include <thread>

int main()
{
    std::cout << "Hello waiter" << std::endl;
    std::chrono::seconds dura( 5);
    std::this_thread::sleep_for( dura );
    std::cout << "Waited 5s\n";
}

this_thread::sleep_for 至少在指定的 sleep_duration 内阻止当前线程的执行。

【讨论】:

  • sleep_for 是在 c++11 中引入的,如果您(必须)使用较旧的编译器,则必须使用 C API 中的 sleep()
  • 问题标记为 C++ 而不是 C
  • @user1595178 而sleep()不是标准C。
【解决方案2】:

您可以在纯 C 级别上执行此操作,因为 C api 调用也可以从 C++ 中使用。如果您实际的 c++ 库没有包含所需的 std:chronostd::this_thread(它们略有不同),它可以消除问题。

大多数操作系统的 C api 都包含一些类似睡眠功能,尽管它也可以不同。例如,在 posixen 上,标准 C 库中有 sleep() API 调用,您也可以在 C++ 中使用它:

#include <unistd.h>

int main() {
   sleep(5);
   return;
}

或者你可以使用usleep() 是你想要一个更好的精度为秒。 usleep() 可以休眠到微秒级。

在 Windows 上,您可以使用 Sleep(int usec) 调用,它带有大的“S”,使用毫秒。

【讨论】:

猜你喜欢
  • 2015-03-05
  • 2014-03-27
  • 1970-01-01
  • 2011-11-10
  • 2022-07-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2020-03-16
相关资源
最近更新 更多