在C++中,通常用于延遲執行的函數有std::this_thread::sleep_for
和std::this_thread::sleep_until
。這兩個函數都屬于C++11引入的多線程庫中的一部分。
std::this_thread::sleep_for
:這個函數接受一個std::chrono::duration
類型的參數,表示要延遲的時間長度。例如,std::this_thread::sleep_for(std::chrono::milliseconds(1000))
表示延遲1秒。這個函數會讓當前線程進入睡眠狀態,暫時釋放CPU的控制權。
std::this_thread::sleep_until
:這個函數接受一個std::chrono::time_point
類型的參數,表示要延遲到的時間點。例如,std::this_thread::sleep_until(std::chrono::system_clock::now() + std::chrono::seconds(1))
表示延遲1秒。這個函數也會讓當前線程進入睡眠狀態,暫時釋放CPU的控制權。
區別:
std::this_thread::sleep_for
是相對時間延遲,傳入的參數是延遲的時間長度;std::this_thread::sleep_until
是絕對時間延遲,傳入的參數是要延遲到的具體時間點。