package async

  1. Overview
  2. Docs
Monadic concurrency library

Install

Dune Dependency

Authors

Maintainers

Sources

async-v0.15.0.tar.gz
sha256=0d3bb21c4bed1edca25ede5e4fbc76790e22379806183846baff475281a6d6a9

doc/index.html

Async

The full API is browsable here.

Async is a library for asynchronous programming, i.e., programming where some part of the program must wait for things that happen at times determined by some external entity (like a human or another program). This includes pretty much any program that uses blocking calls (e.g., networking code, disk access), timeouts, or event loops (e.g., GUIs).

In a nutshell, the idea is to use non-preemptive user-level threads and first-class blocking operations with blocking expressed in the type system.

Read more in Chapter 18 of Real World OCaml.

Organization

Async comprises four packages, Async_command, Async_kernel, Async_rpc, and Async_unix.

  • Async_kernel contains Async's core data structures, like Deferred. Async_kernel is portable, and so can be used in JavaScript using Async_js. In principle it could also be used on Windows, but no scheduler has been written for Async on Windows as of yet.
  • Async_unix adds Unix dependencies for things like system calls and threads. Using these, it hooks the Async_kernel scheduler up to either `epoll` or `select`, depending on availabilty, and manages a thread pool that blocking system calls run in.

You can most easily understand Async's API by reading the documentation of these individually.

OCaml

Innovation. Community. Security.

On This Page
  1. Organization