package eio
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=3792e912bd8d494bb2e38f73081825e4d212b1970cf2c1f1b2966caa9fd6bc40
sha512=4a80dbcf8cf2663bdad0f2970871844f37bd293c56bd1ce602910e0a613754945f1f942719f9630906453be7c73c1732dc97526c6c90b0b36100d04fd5e871e4
doc/eio/Eio/index.html
Module EioSource
Effects based parallel IO for OCaml.
Eio provides support for concurrency (juggling many tasks) and parallelism (using multiple CPU cores for performance).
It provides facilities for creating and coordinating fibers (light-weight threads) and domains (for parallel processing), as well as interfaces for interacting with resources provided by the operating system.
These features must be used within an event loop, provided by an Eio backend. Applications can use Eio_main.run to run a suitable loop.
See https://github.com/ocaml-multicore/eio for a tutorial.
Commonly used standard features. This module is intended to be opened.
Fibers
Grouping fibers and other resources so they can be turned off together.
Concurrency primitives
A promise is a placeholder for result that will arrive in the future.
Collections
Multiple domains
Parallel computation across multiple CPU cores.
A pool of domains for executing jobs.
Errors and debugging
val traceln :
?__POS__:(string * int * int * int) ->
('a, Format.formatter, unit, unit) format4 ->
'atraceln fmt outputs a debug message (typically to stderr).
Trace messages are printed by default and do not require logging to be configured first. The message is printed with a newline, and is flushed automatically. traceln is intended for quick debugging rather than for production code.
Unlike most Eio operations, traceln will never switch to another fiber; if the OS is not ready to accept the message then the whole domain waits.
It is safe to call traceln from multiple domains at the same time. Each line will be written atomically.
Examples:
traceln "x = %d" x;
traceln "x = %d" x ~__POS__; (* With location information *)Cross-platform OS API
The general pattern here is that each type of resource has a set of functions for using it, plus a provider (Pi) module to allow defining your own implementations.
The system resources are available from the environment argument provided by your event loop (e.g. Eio_main.run).