Difference between revisions of "cpp/thread/sleep for"
From cppreference.com
(spacing) |
Andreas Krug (Talk | contribs) m ({{c}}, headers sorted) |
||
(34 intermediate revisions by 17 users not shown) | |||
Line 1: | Line 1: | ||
{{cpp/title|n=this_thread::|sleep_for}} | {{cpp/title|n=this_thread::|sleep_for}} | ||
{{cpp/thread/navbar}} | {{cpp/thread/navbar}} | ||
− | {{ddcl | header=thread | | + | {{ddcl|header=thread|since=c++11|1= |
template< class Rep, class Period > | template< class Rep, class Period > | ||
− | void sleep_for( std::chrono::duration<Rep,Period> sleep_duration ); | + | void sleep_for( const std::chrono::duration<Rep, Period>& sleep_duration ); |
}} | }} | ||
− | Blocks the execution of the current thread for specified {{ | + | Blocks the execution of the current thread for ''at least'' the specified {{c|sleep_duration}}. |
+ | |||
+ | This function may block for longer than {{c|sleep_duration}} due to scheduling or resource contention delays. | ||
+ | |||
+ | The standard recommends that a steady clock is used to measure the duration. If an implementation uses a system clock instead, the wait time may also be sensitive to clock adjustments. | ||
===Parameters=== | ===Parameters=== | ||
− | {{ | + | {{par begin}} |
− | {{ | + | {{par|sleep_duration|time duration to sleep}} |
− | {{ | + | {{par end}} |
===Return value=== | ===Return value=== | ||
Line 17: | Line 21: | ||
===Exceptions=== | ===Exceptions=== | ||
− | {{ | + | Any exception thrown by {{tt|clock}}, {{tt|time_point}}, or {{tt|duration}} during the execution (clocks, time points, and durations provided by the standard library never throw). |
===Example=== | ===Example=== | ||
− | {{example | + | {{example |
− | + | |code= | |
− | + | ||
#include <chrono> | #include <chrono> | ||
+ | #include <iostream> | ||
#include <thread> | #include <thread> | ||
− | + | ||
int main() | int main() | ||
{ | { | ||
− | std::cout << "Hello waiter" << std:: | + | using namespace std::chrono_literals; |
− | std::chrono:: | + | |
− | std::this_thread::sleep_for( | + | std::cout << "Hello waiter\n" << std::flush; |
− | std::cout << "Waited | + | |
+ | const auto start = std::chrono::high_resolution_clock::now(); | ||
+ | std::this_thread::sleep_for(2000ms); | ||
+ | const auto end = std::chrono::high_resolution_clock::now(); | ||
+ | const std::chrono::duration<double, std::milli> elapsed = end - start; | ||
+ | |||
+ | std::cout << "Waited " << elapsed << '\n'; | ||
} | } | ||
− | + | |p=true | |
+ | |output= | ||
Hello waiter | Hello waiter | ||
− | Waited 2000 ms | + | Waited 2000.13 ms |
}} | }} | ||
===See also=== | ===See also=== | ||
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc inc|cpp/thread/dsc sleep_until}} |
− | {{ | + | {{dsc end}} |
+ | |||
+ | {{langlinks|de|es|fr|it|ja|pt|ru|zh}} |
Latest revision as of 10:26, 23 October 2023
Defined in header <thread>
|
||
template< class Rep, class Period > void sleep_for( const std::chrono::duration<Rep, Period>& sleep_duration ); |
(since C++11) | |
Blocks the execution of the current thread for at least the specified sleep_duration.
This function may block for longer than sleep_duration due to scheduling or resource contention delays.
The standard recommends that a steady clock is used to measure the duration. If an implementation uses a system clock instead, the wait time may also be sensitive to clock adjustments.
Contents |
[edit] Parameters
sleep_duration | - | time duration to sleep |
[edit] Return value
(none)
[edit] Exceptions
Any exception thrown by clock
, time_point
, or duration
during the execution (clocks, time points, and durations provided by the standard library never throw).
[edit] Example
Run this code
#include <chrono> #include <iostream> #include <thread> int main() { using namespace std::chrono_literals; std::cout << "Hello waiter\n" << std::flush; const auto start = std::chrono::high_resolution_clock::now(); std::this_thread::sleep_for(2000ms); const auto end = std::chrono::high_resolution_clock::now(); const std::chrono::duration<double, std::milli> elapsed = end - start; std::cout << "Waited " << elapsed << '\n'; }
Possible output:
Hello waiter Waited 2000.13 ms
[edit] See also
(C++11) |
stops the execution of the current thread until a specified time point (function) |