C++11及以上应优先使用std::this_thread::sleep_for实现跨平台延时,需包含和头文件;旧平台可选Sleep()(Windows)或nanosleep()(Linux),但缺乏可移植性。

在C++中实现sleep或延时,主要取决于你使用的标准版本和目标平台。C++11起,标准库提供了跨平台的 std::this_thread::sleep_for 和 std::this_thread::sleep_until,推荐优先使用;旧代码或特殊场景下可能用到平台API(如Windows的 Sleep()或Linux的usleep()/nanosleep()),但不具可移植性。
✅ C++11及以上:标准线程sleep(推荐)
需包含头文件 <thread></thread> 和 <chrono></chrono>,利用 std::chrono 的时间单位指定延时长度。
示例(延时2.5秒):
#include <iostream>
#include <thread>
#include <chrono>
<p>int main() {
std::cout << "程序开始\n";
std::this_thread::sleep_for(std::chrono::milliseconds(2500));
// 或写成:sleep_for(2s + 500ms);
std::cout << "2.5秒后继续\n";
return 0;
}登录后复制
常用时间单位:
立即学习“C++免费学习笔记(深入)”;
-
std::chrono::seconds(3)→ 3秒 -
std::chrono::milliseconds(500)→ 500毫秒 -
std::chrono::microseconds(1000)→ 1000微秒(即1毫秒) -
std::chrono::nanoseconds(1000000)→ 1毫秒
⚠️ Windows平台:Sleep()(仅限Win32)
需包含 <windows.h></windows.h>,参数单位为毫秒,且会将当前线程挂起(注意大小写:Sleep 首字母大写)。
#include <iostream>
#include <windows.h>
<p>int main() {
std::cout << "开始\n";
Sleep(1000); // 暂停1000毫秒(1秒)
std::cout << "1秒后\n";
}登录后复制
⚠️ 注意:Sleep(0) 表示主动让出当前时间片,不真正“休眠”,常用于轻量级调度提示。
标签: linux windows ai unix c++ ios win stream 标准库
还木有评论哦,快来抢沙发吧~