คำตอบที่อัปเดตสำหรับ C ++ 11:
ใช้ฟังก์ชันsleep_for
และsleep_until
:
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread;
using namespace std::chrono;
sleep_for(nanoseconds(10));
sleep_until(system_clock::now() + seconds(1));
}
ด้วยฟังก์ชั่นเหล่านี้ไม่มีความจำเป็นต้องอย่างต่อเนื่องเพิ่มฟังก์ชั่นใหม่สำหรับการแก้ปัญหาที่ดีกว่า: sleep
, usleep
, nanosleep
ฯลฯsleep_for
และsleep_until
มีฟังก์ชั่นแม่แบบที่สามารถยอมรับค่าความละเอียดใด ๆ ผ่านทางchrono
ประเภท; ชั่วโมงวินาที femtoseconds ฯลฯ
ใน C ++ 14 คุณสามารถทำให้โค้ดง่ายขึ้นด้วยคำต่อท้ายตามตัวอักษรสำหรับnanoseconds
และseconds
:
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread;
using namespace std::chrono_literals;
using std::chrono::system_clock;
sleep_for(10ns);
sleep_until(system_clock::now() + 1s);
}
โปรดทราบว่าระยะเวลาจริงของการนอนหลับขึ้นอยู่กับการใช้งาน: คุณสามารถขอให้นอนเป็นเวลา 10 นาโนวินาที แต่การใช้งานอาจจบลงด้วยการนอนหลับเป็นเวลาหนึ่งมิลลิวินาทีแทนหากเป็นเวลาที่สั้นที่สุด