.\" Automatically generated by Pandoc 2.17.1.1 .\" .TH "MINIASYNC" "7" "2022-09-04" "MINIASYNC - miniasync version 0.2.1" "MINIASYNC Programmer's Manual" .hy .\" SPDX-License-Identifier: BSD-3-Clause .\" Copyright 2020-2022, Intel Corporation .SH NAME .PP \f[B]miniasync\f[R] - Mini Library for Asynchronous Programming in C .SH DESCRIPTION .PP \f[B]miniasync\f[R] is a minimalistic library used for asynchronous programming in C programming language. It provides a \f[B]miniasync_future\f[R](7) feature that is an abstraction representing a task or a collection of tasks. Futures are meant to be implemented by developers and used by applications to run multiple concurrent tasks. Futures begin execution when they are polled for the first time, futures can be safely polled until an \f[B]FUTURE_STATE_COMPLETE\f[R] state is returned, it means that the future has finished its task. Polling completed future results in undefined behavior unless the specific future implementation says otherwise. For more information about future API, see \f[B]miniasync_future\f[R](7). .PP Futures can be polled in various ways, the simplest of them all is using \f[B]future_poll\f[R](3) function. \f[B]miniasync\f[R] library also provides the \f[B]miniasync_runtime\f[R](7) feature that manages the future polling behavior. Runtime makes use of optimized polling mechanisms that avoid busy polling and simplifies the future polling process. Runtime is meant to be used together with concrete future implementations. For more information about runtime API, see \f[B]miniasync_runtime\f[R](7). .PP In case that the future is meant to execute an asynchronous memory operation, \f[B]miniasync\f[R] library provides a \f[B]miniasync_vdm\f[R](7) virtual data mover feature. Virtual data mover generalizes asynchronous memory operations to avoid hard dependencies on any specific hardware offload or memory operations. \f[B]miniasync\f[R] provides the following virtual data mover implementations: .IP \[bu] 2 \f[B]miniasync_vdm_threads\f[R](7) - an implementation based on system threads .IP \[bu] 2 \f[B]miniasync_vdm_dml\f[R](7) - an implementation based on the \f[I]Data Mover Library\f[R] (\f[B]DML\f[R]) .PP For more information about virtual data mover API, see \f[B]miniasync_vdm\f[R](7). .SH SEE ALSO .PP \f[B]future_poll\f[R](3), \f[B]miniasync_future\f[R](7), \f[B]miniasync_runtime\f[R](7), \f[B]miniasync_vdm\f[R](7), \f[B]miniasync_vdm_dml\f[R](7), \f[B]miniasync_vdm_threads\f[R](7) and \f[B]\f[R]