目录
2. Linux/Unix 下的类似函数:sleep() 和 usleep()
在 C++ 中,Sleep()(注意大小写敏感性)并不是标准库的一部分,而是特定于某些平台的函数,主要用于暂停程序执行一段时间。它的具体实现和用法会因操作系统不同而有所差异。以下我详细讲解一下 Sleep() 的功能、用法以及相关注意事项,并顺便介绍标准 C++ 中的替代方案。
1. Sleep() 函数(Windows 环境)
定义
-
头文件:<windows.h>
-
功能:暂停当前线程的执行,等待指定的时间(以毫秒为单位)。
-
原型:
void Sleep(DWORD dwMilliseconds);
参数 dwMilliseconds:暂停的时间,单位是毫秒(DWORD 是无符号 32 位整数)。
返回值:无返回值。
特点
-
阻塞式:调用 Sleep() 的线程会暂停执行,期间不会占用 CPU。
-
平台依赖:仅适用于 Windows 系统,在 Linux 或 macOS 上不可用。
用法
常用于需要延迟执行的场景,比如模拟时间间隔、控制循环速度等。
示例
#include <iostream>
#include <windows.h> // 包含 Sleep()
int main() {
std::cout << "开始\n";
Sleep(2000); // 暂停 2000 毫秒(2 秒)
std::cout << "2秒后\n";
return 0;
}
注意事项
-
精度:Windows 下 Sleep() 的精度受系统时钟分辨率影响,通常在 1-15 毫秒之间,不保证精确到毫秒。
-
线程影响:只暂停调用它的线程,不影响其他线程。
2. Linux/Unix 下的类似函数:sleep() 和 usleep()
在 Linux 或 Unix 系统中,Sleep() 不存在,但有类似的函数:
sleep()
-
头文件:<unistd.h>
-
功能:暂停程序执行,时间以秒为单位。
-
原型:
unsigned int sleep(unsigned int seconds);
返回值:如果被信号中断,返回剩余的秒数;否则返回 0。
#include <iostream>
#include <unistd.h>
int main() {
std::cout << "开始\n";
sleep(2); // 暂停 2 秒
std::cout << "2秒后\n";
return 0;
}
usleep()
-
头文件:<unistd.h>
-
功能:暂停执行,时间以微秒(μs)为单位。
-
原型:
int usleep(useconds_t usec);
-
注意:在 POSIX.1-2001 中已废弃,推荐使用 nanosleep()。
-
#include <iostream> #include <unistd.h> int main() { std::cout << "开始\n"; usleep(2000000); // 暂停 2000000 微秒(2 秒) std::cout << "2秒后\n"; return 0; }