uv_async_t — Async handle

Async handles allow the user to “wakeup” the event loop and get a callback called from another thread.

Data types


Async handle type.

void (*uv_async_cb)(uv_async_t* handle)

Type definition for callback passed to uv_async_init().

Public members


See also

The uv_handle_t members also apply.


int uv_async_init(uv_loop_t* loop, uv_async_t* async, uv_async_cb async_cb)

Initialize the handle. A NULL callback is allowed.

Returns:0 on success, or an error code < 0 on failure.


Unlike other handle initialization functions, it immediately starts the handle.

int uv_async_send(uv_async_t* async)

Wake up the event loop and call the async handle’s callback.

Returns:0 on success, or an error code < 0 on failure.


It’s safe to call this function from any thread. The callback will be called on the loop thread.


libuv will coalesce calls to uv_async_send(), that is, not every call to it will yield an execution of the callback. For example: if uv_async_send() is called 5 times in a row before the callback is called, the callback will only be called once. If uv_async_send() is called again after the callback was called, it will be called again.

See also

The uv_handle_t API functions also apply.