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 1000+ tech skills courses.