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

# nng\_aio\_set\_timeout(3)

set asynchronous I/O timeout

## NAME

nng\_aio\_set\_timeout - set asynchronous I/O timeout

## SYNOPSIS

```
#include <nng/nng.h>
typedef int nng_duration;
void nng_aio_set_timeout(nng_aio *aio, nng_duration timeout);
typedef uint64_t nng_time;
void nng_aio_set_expire(nng_aio *aio, nng_time expiration);
```

## DESCRIPTION

The `nng_aio_set_timeout()` function sets a *timeout* for the asynchronous operation associated with *aio*. This causes a timer to be started when the operation is actually started. If the timer expires before the operation is completed, then it is aborted with an error of `NNG_ETIMEDOUT`. The *timeout* is specified as a relative number of milliseconds.

If the timeout is `NNG_DURATION_INFINITE`, then no timeout is used. If the timeout is `NNG_DURATION_DEFAULT`, then a "default" or socket-specific timeout is used. (This is frequently the same as `NNG_DURATION_INFINITE`.)

The `nng_aio_set_expire()` function is similar to `nng_aio_set_timeout()`, but sets an absolute expiration time based on the system clock. The *expiration* is expressed as a number of milliseconds since some point in the past. The `nng_clock()` function can be used to determine the current value of the clock.

**Tip**\

As most operations involve some context switching, it is usually a good idea to allow at least a few tens of milliseconds before timing them out — a too small timeout might not allow the operation to properly begin before giving up!

The value of *timeout* set for the *aio* is persistent, so that if the handle is reused for multiple operations, they will have the same relative timeout.

## RETURN VALUES

None.

## ERRORS

None.

## SEE ALSO

[nng\_aio\_alloc(3)](/nng_aio_alloc/3.md), [nng\_aio\_cancel(3)](/nng_aio_cancel/3.md), [nng\_aio\_result(3)](/nng_aio_result/3.md), [nng\_aio(5)](/nng_aio/5.md), [nng\_duration(5)](/nng_duration/5.md), [nng(7)](/nng/7.md)
