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...
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: