Sleep and Wait
One crucial 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 parametrised by a time duration; methods ending with _until
by a time point. Here is a concise overview of the methods dealing 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... |