C++中是否有等待函数?

3

我一直在开发一个程序,使用了sleep()函数。我希望程序可以跨平台运行,支持macOS、Linux和Windows系统,但是维护三个分支非常麻烦且难以处理。有什么方法可以使程序跨平台?还有哪些等待几秒钟的函数适用于该程序?测试时发现程序甚至无法正常工作...

Linux代码似乎无法正常工作...

#include <iostream>
#include <unistd.h>

using namespace std;


int loading() {
  sleep(0.25);
  cout << "Loading... ";
  sleep(0.25);
  cout << "hi";
  sleep(0.25);
  cout << "e";
  sleep(0.25);
  return 0;
}
int main() {
  loading();
  return 0;
}

Neither does Windows...

#include <iostream>
#include <windows.h>

using namespace std;


int loading() {
  Sleep(250);
  cout << "Loading... ";
  Sleep(250);
  cout << "hi";
  Sleep(250);
  cout << "e";
  Sleep(250);
  return 0;
}
int main() {
  loading();
  return 0;
}

语法有误,还是我使用不正确?


Unix的sleep使用的是秒,而Windows的Sleep使用的是毫秒。不同的API,不同的行为。 - Jean-Baptiste Yunès
1个回答

13

自从C++11以来,你可以使用std::this_thread::sleep_for

using namespace std::chrono_literals;

std::this_thread::sleep_for(250ms);

它是跨平台的吗?它会有任何依赖关系吗? - KiwiFruit555
@Amatsuki555 它不仅是跨平台的,而且是标准 C++。 - PaulMcKenzie
1
@Amatsuki555,这是标准库的一部分。任何符合标准的编译器(自C++11以来)都将支持它。 - ChrisMM
哦...我只是想确认一下,因为我对C++还很陌生。 - KiwiFruit555
@Amatsuki555 -- 自从C++11以来,线程、同步、定时器等功能已经被添加到C++语言库中。你可能想要找一本针对C++11(而不是C++11之前版本)的好书。 - PaulMcKenzie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接