pub fn pause()
time
and test-util
only.Expand description
Pauses time.
The current value of Instant::now()
is saved and all subsequent calls
to Instant::now()
will return the saved value. The saved value can be
changed by advance
or by the time auto-advancing once the runtime
has no work to do. This only affects the Instant
type in Tokio, and
the Instant
in std continues to work as normal.
Pausing time requires the current_thread
Tokio runtime. This is the
default runtime used by #[tokio::test]
. The runtime can be initialized
with time in a paused state using the Builder::start_paused
method.
For cases where time is immediately paused, it is better to pause
the time using the main
or test
macro:
#[tokio::main(flavor = "current_thread", start_paused = true)]
async fn main() {
println!("Hello world");
}
Panics
Panics if time is already frozen or if called from outside of a
current_thread
Tokio runtime.
Auto-advance
If time is paused and the runtime has no work to do, the clock is
auto-advanced to the next pending timer. This means that Sleep
or
other timer-backed primitives can cause the runtime to advance the
current time when awaited.