Difference between revisions of "cpp/thread/sleep for"
From cppreference.com
(standard says "should", so let's not make it look like it says the clock is implementation-defined) |
Andreas Krug (Talk | contribs) m ({{c}}, headers sorted) |
||
(12 intermediate revisions by 7 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 | since=c++11 | 1= | + | {{ddcl|header=thread|since=c++11|1= |
template< class Rep, class Period > | template< class Rep, class Period > | ||
void sleep_for( const 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 ''at least'' the specified {{ | + | Blocks the execution of the current thread for ''at least'' the specified {{c|sleep_duration}}. |
− | This function may block for longer than {{ | + | 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. | 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. | ||
Line 14: | Line 14: | ||
===Parameters=== | ===Parameters=== | ||
{{par begin}} | {{par begin}} | ||
− | {{par | sleep_duration | time duration to sleep}} | + | {{par|sleep_duration|time duration to sleep}} |
{{par end}} | {{par end}} | ||
Line 21: | Line 21: | ||
===Exceptions=== | ===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). | + | 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> | ||
Line 33: | Line 33: | ||
{ | { | ||
using namespace std::chrono_literals; | using namespace std::chrono_literals; | ||
− | std::cout << "Hello waiter" << std:: | + | |
− | auto start = std::chrono::high_resolution_clock::now(); | + | std::cout << "Hello waiter\n" << std::flush; |
− | std::this_thread::sleep_for( | + | |
− | auto end = std::chrono::high_resolution_clock::now(); | + | const auto start = std::chrono::high_resolution_clock::now(); |
− | std::chrono::duration<double, std::milli> elapsed = end-start; | + | std::this_thread::sleep_for(2000ms); |
− | std::cout << "Waited " << elapsed | + | 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. | + | Waited 2000.13 ms |
}} | }} | ||
===See also=== | ===See also=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc inc | cpp/thread/dsc sleep_until}} | + | {{dsc inc|cpp/thread/dsc sleep_until}} |
{{dsc end}} | {{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) |