View on GitHub

Mintomic

A Small, Portable Lock-Free API

Introduction


* **Update 2015-02-06: Mintomic is no longer being maintained. Native C atomics are available in Turf instead: https://github.com/preshing/turf/tree/master/turf/c ***


Mintomic (short for “minimal atomic”) is an API for low-level lock-free programming in C and C++.

Design Goals

  1. Efficient machine code generation.
  2. Straightforward implementation.
  3. Compatibility with older compilers. C11 and C++11 not required.

For more information, see the blog post Introducing Mintomic.

Supported Platforms

Mintomic currently supports x86, x64, PowerPC, ARMv6 and ARMv7 and has been tested on Windows, MacOS, iOS, Linux and Xbox 360.

CMake is required to build & run the test suite.

Package Contents

Mintomic consists of the following submodules:

Lock-Free API

Provides portable memory fences such as mint_thread_fence_acquire, atomic read-modify-write operations such as mint_fetch_add_32_relaxed, plus various helper functions, macros and types. Implemented in pure C, mainly as a set of header files.

MintSystem

A portable API for thread creation, semaphores, time and date services, sleep, and thread and process IDs. Basically, the system services you need in order to run lock-free code in the first place, plus a few extras. Implemented in pure C.

MintPack

A collection of data structures and modules built on top of Mintomic and MintSystem. Written as a platform-independent library in C++.

Test Suite

A suite of unit tests in platform-independent C++ to validate the implemention of Mintomic primitives.

License

Mintomic is distributed under the Modified BSD License. See the LICENSE file.