# lio_listio

Performs an asynchronous read operation.

## Syntax

int lio_listio(int mode, struct aiocb *list[], int nent, struct sigevent *sig);

## Arguments

mode | Takes following values declared in <aio.h> file: `LIO_WAIT`: Use when you want the function to return only after completing I/O operations (synchronous I/O operations) `LIO_NOWAIT`: Use when you want the function to return as soon as I/O operations are queued (asynchronous I/O requests)
*list[] | Array of the `aiocb` pointers specifying the submitted I/O requests; NULL elements in the array are ignored
nent | Number of elements in the array
*sig | Determines if asynchronous notification is sent after all I/O operations completes; takes following values: 0: Asynchronous notification occurs; a queued signal, with an application-defined value, is generated when an asynchronous I/O request occurs 1: Asynchronous notification does not occur even when asynchronous I/O requests are processed 2: Asynchronous notification occurs; a notification function is called to perform notification

## Description

The lio_listio() function initiates a list of I/O requests with a single function call.

The mode argument determines whether the function returns when all the I/O operations are completed, or as soon as the operations are queued.

If the mode argument is `LIO_WAIT`, the function waits until all I/O operations are complete. The sig argument is ignored in this case.

If the mode argument is `LIO_NOWAIT`, the function returns immediately. Asynchronous notification occurs according to the sig argument after all the I/O operations complete.

## Returns

When mode=`LIO_NOWAIT` the lio_listio() function returns:

- 0: I/O operations are successfully queued
- -1: Error; I/O operations not queued; to get the proper error code, use errno.

When mode=`LIO_WAIT` the lio_listio() function returns:

- 0: I/O operations specified completed successfully
- -1: Error; I/O operations not completed; to get the proper error code, use errno.

Parent topic: Intel's C++ Asynchronous I/O Library for Windows* Operating Systems

## See Also

Example Code for lio_listio()