vibe.d beta banner
get vibe.d

Asynchronous I/O that doesn’t get in your way, written in D

Function sleep

Suspends the execution of the calling task for the specified amount of time.

void sleep (
  core.time.Duration timeout
) @safe;

Note that other tasks of the same thread will continue to run during the wait time, in contrast to core.thread.Thread.sleep, which shouldn't be used in vibe.d applications.

Repeated sleep

As this method creates a new Timer every time, it is not recommended to use it in a tight loop. For functions that calls sleep frequently, it is preferable to instantiate a single Timer and reuse it, as shown in the following example:

void myPollingFunction () {
 Timer waiter = createTimer(null); // Create a re-usable timer
 while (true) {
  // Your awesome code goes here
  timer.rearm(timeout, false);


May throw an InterruptException if the task gets interrupted using Task.interrupt().


import vibe.core.core : sleep;
import vibe.core.log : logInfo;
import core.time : msecs;

void test()
	logInfo("Sleeping for half a second...");
	logInfo("Done sleeping.");

Sönke Ludwig


© 2012-2020 Sönke Ludwig


Subject to the terms of the MIT license, as written in the included LICENSE.txt file.