Sleep and Wait
This lesson gives a brief introduction to sleep/wait and its usage in C++ with the help of interactive examples.
We'll cover the following
One important feature that multithreading components such as threads, locks, condition variables, and futures have in common is the notion of time.
Conventions
The methods for handling time in multithreading programs follow a simple convention: Methods ending with _for
have to be parametrized by a time duration; methods ending with _until
by a time point. Here is a concise overview of the methods that deal with sleeping, blocking, and waiting:
Multithreading Component | _until | _for |
---|---|---|
std::thread th |
th.sleep_until(in2min) |
th.sleep_for(2s) |
std::unique_lock lk |
lk.try_lock_until(in2min) |
lk.try_lock(2s) |
std::condition_variable cv |
cv.wait_until(in2min) |
cv.wait_for(2s) |
std::future fu |
fu.wait_until(in2min) |
fu.wait_for(2s) |
std::shared_future shFu |
shFu.wait(in2min) |
shFu.wait_for(2s) |
in2min
stands for a time 2 minutes in the future; 2s
is a time duration of 2 seconds. Although I use auto
in the initialization of the time point in2min
, the following is still verbose:
Get hands-on with 1400+ tech skills courses.