C++ 休眠函数

让我用中文解释这两种休眠方式的区别:

  1. std::this_thread::sleep_for
1
std::this_thread::sleep_for(std::chrono::milliseconds(100)); // C++11 方式
  • 这是 C++11 引入的现代休眠方法
  • 跨平台兼容性好
  • 可以使用不同的时间单位(毫秒、微秒、秒等)
  • 提供类型安全
  • 可以与其他 C++时间相关的功能无缝配合
  • 精度依赖于操作系统实现
  1. usleep
1
usleep(100000); // 参数单位是微秒
  • POSIX 系统的传统 C 函数
  • 只在 UNIX/Linux 系统上可用
  • 只接受微秒作为参数单位
  • 参数类型是无符号整数
  • 在某些系统上已经被废弃
  • 可能会被信号中断

建议:

  1. 在现代 C++代码中,推荐使用std::this_thread::sleep_for
  2. 如果是只针对 UNIX/Linux 的老代码,usleep也是可以接受的
  3. 如果需要高精度定时,两者都不够理想,应该考虑使用专门的实时编程方案

示例对比:

1
2
3
4
5
// 现代C++方式,休眠100毫秒
std::this_thread::sleep_for(std::chrono::milliseconds(100));

// 传统方式,休眠100毫秒
usleep(100 * 1000); // 需要自己转换单位