MyNixOS website logo
Description

A library for process pools coupled with asynchronous message queues.

Please see the README on GitHub at https://github.com/sheyll/rio-process-pool#readme

Concurrent Process Pools

NOTE: To be able to fully view this README, use the GitHub Pages Version.

A process pool processes incoming messages and dispatches them to worker threads.

Worker threads are started and stopped and each has their own message box, that decouples from the processes for asynchronous processing.

The main architectural advantages are the usage of multiple CPU cores and the seperation of address spaces of each worker.

This is clearly more low-level than STM in that regard, that STM offers shared memory concurrency.

This is also just a small library built on top of unliftio-messagebox.

Module Structure

The library is contained in modules with names starting with RIO.ProcessPool.

Also the module RIO.ProcessPool(API docs)(Hackage) exposes the API, and can be used to import everything.

The full documentation is either on this page(build log) or on Hackage.

Benchmarks

Unit Tests

Heap Profiling

Time Profiling

Test Profiling Report

Memory Leak Tests

Benchmark memory usage of a very simple Pool example.

A single dispatcher process sends a Start, some Work and a Stop message to a Pool that spawns and dispatches the message

This is a rather long running test, executed with capped memory so that when space is leaked, it will crash the benchmark.

The output is printed into this log file.

Metadata

Version

1.0.1

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows