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¶
-
type
uv_async_t
¶ Async handle type.
-
typedef void (*
uv_async_cb
)(uv_async_t *handle)¶ Type definition for callback passed to
uv_async_init()
.
API¶
-
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.
Note
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.
Note
It’s safe to call this function from any thread. The callback will be called on the loop thread.
Note
uv_async_send()
is async-signal-safe. It’s safe to call this function from a signal handler.Warning
libuv will coalesce calls to
uv_async_send()
, that is, not every call to it will yield an execution of the callback. For example: ifuv_async_send()
is called 5 times in a row before the callback is called, the callback will only be called once. Ifuv_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.