...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The basic_waitable_timer
template uses wait traits to allow
programs to customize wait
and async_wait
behavior.
[Note: Possible uses of wait traits include:
— To
enable timers based on non-realtime clocks.
— Determining how quickly
wallclock-based timers respond to system time changes.
— Correcting for
errors or rounding timeouts to boundaries.
— Preventing duration overflow.
That is, a program may set a timer's expiry e
to be Clock::max()
(meaning never reached) or Clock::min()
(meaning always in the
past). As a result, computing the duration until timer expiry as e
- Clock::now()
may cause overflow. —end note]
For a type Clock
meeting the Clock
requirements
(C++Std [time.clock.req]), a type X
meets the WaitTraits
requirements if it satisfies the requirements listed below.
In the table below, t
denotes a (possibly const) value of type
Clock::time_point
; and d
denotes a (possibly const)
value of type Clock::duration
.
Table 31. WaitTraits requirements
expression |
return type |
assertion/note |
---|---|---|
|
|
Returns a |
|
|
Returns a |