# `uv_idle_t` — Idle handle

Idle handles will run the given callback once per loop iteration, right before the `uv_prepare_t` handles.

Note

The notable difference with prepare handles is that when there are active idle handles, the loop will perform a zero timeout poll instead of blocking for i/o.

Warning

Despite the name, idle handles will get their callbacks called on every loop iteration, not when the loop is actually “idle”.

## Data types

type uv_idle_t

  Idle handle type.

typedef void (*uv_idle_cb)(uv_idle_t *handle)

  Type definition for callback passed to `uv_idle_start()`.

### Public members

N/A

See also

The `uv_handle_t` members also apply.

## API

int uv_idle_init(uv_loop_t *loop, uv_idle_t *idle)

  Initialize the handle. This function always succeeds.

  Returns

    0

int uv_idle_start(uv_idle_t *idle, uv_idle_cb cb)

  Start the handle with the given callback. This function always succeeds, except when cb is NULL.

  Returns

    0 on success, or UV_EINVAL when cb == NULL.

int uv_idle_stop(uv_idle_t *idle)

  Stop the handle, the callback will no longer be called. This function always succeeds.

  Returns

    0

See also

The `uv_handle_t` API functions also apply.