---
name: "nng_aio"
section: "5"
platform: "linux"
package: "libnng-dev"
version: "1.10.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/nng_aio"
---

# nng\_aio(5)

asynchronous I/O handle

## NAME

nng\_aio - asynchronous I/O handle

## SYNOPSIS

```
#include <nng/nng.h>
typedef struct nng_aio nng_aio;
```

## DESCRIPTION

An `nng_aio` is an opaque structure used in conjunction with asynchronous I/O operations. Every asynchronous operation uses one of these structures, each of which can only be used with a single operation at a time.

Asynchronous operations are performed without blocking calling application threads. Instead the application registers a callback function to be executed when the operation is complete (whether successfully or not). This callback will be executed exactly once.

The asynchronous I/O framework also supports cancellation of operations that are already in progress (see `nng_aio_cancel()`), as well setting a maximum timeout for them to complete within (see `nng_aio_set_timeout()`).

It is also possible to initiate an asynchronous operation, and wait for it to complete using `nng_aio_wait()`.

These structures are created using the `nng_aio_alloc()`, and destroyed using `nng_aio_free()`.

## SEE ALSO

[nng\_aio\_abort(3)](/nng_aio_abort/3.md), [nng\_aio\_alloc(3)](/nng_aio_alloc/3.md), [nng\_aio\_cancel(3)](/nng_aio_cancel/3.md), [nng\_aio\_count(3)](/nng_aio_count/3.md), [nng\_aio\_free(3)](/nng_aio_free/3.md), [nng\_aio\_get\_input(3)](/nng_aio_get_input/3.md), [nng\_aio\_get\_msg(3)](/nng_aio_get_msg/3.md), [nng\_aio\_get\_output(3)](/nng_aio_get_output/3.md), [nng\_aio\_result(3)](/nng_aio_result/3.md), [nng\_aio\_set\_input(3)](/nng_aio_set_input/3.md), [nng\_aio\_set\_iov(3)](/nng_aio_set_iov/3.md), [nng\_aio\_set\_msg(3)](/nng_aio_set_msg/3.md), [nng\_aio\_set\_timeout(3)](/nng_aio_set_timeout/3.md), [nng\_aio\_stop(3)](/nng_aio_stop/3.md), [nng\_aio\_wait(3)](/nng_aio_wait/3.md), [nng\_strerror(3)](/nng_strerror/3.md), [nng\_aio(5)](/nng_aio/5.md), [nng(7)](/nng/7.md)
