No description
Find a file
2024-09-28 19:00:15 -05:00
.github/workflows macos takes too long on github actions, not necessary 2024-09-28 18:54:53 -05:00
.vscode Add linting 2022-11-08 23:10:50 -06:00
examples nimpretty 2021-01-06 04:40:15 -06:00
src Don’t assert in ops 2024-09-28 18:37:34 -05:00
tests Don’t assert in ops 2024-09-28 18:37:34 -05:00
.editorconfig Initial commit, SPSC only 2020-07-02 19:22:02 -05:00
.gitignore gitignore htmldocs 2021-12-14 12:59:49 -06:00
.gitmodules Remove htmldocs submodule 2021-01-25 19:50:47 -06:00
AUTHORS Add contribution / release notes 2020-07-03 02:32:14 -05:00
CHANGELOG.md macos takes too long on github actions, not necessary 2024-09-28 18:54:53 -05:00
CONTRIBUTING.md Linting 2021-01-24 22:56:13 -06:00
LICENSE Initial commit, SPSC only 2020-07-02 19:22:02 -05:00
lockfreequeues.code-workspace Update README, CHANGELOG, and vscode config 2021-07-14 00:20:06 -05:00
lockfreequeues.nimble Bump required nim version 2024-09-28 18:07:20 -05:00
nimdoc.cfg Simplify docgen 2021-12-14 12:47:26 -06:00
README.md Update README.md 2024-09-28 19:00:15 -05:00

build

lockfreequeues

Lock-free queues for Nim, implemented as ring buffers.

Three implementations are provided:

  • Sipsic is a single-producer, single-consumer bounded queue. Pushing and popping are wait-free.
  • Mupsic is a multi-producer, single-consumer bounded queue. Popping is wait-free.
  • Mupmuc is a multi-producer, multi-consumer bounded queue.

API documentation: https://elijahr.github.io/lockfreequeues

Installation

nimble install lockfreequeues

Examples

Examples are located in the examples directory and can be compiled and run with:

nimble examples

Reference

Many thanks to Mamy Ratsimbazafy for reviewing the initial release and offering suggestions.

Contributing

  • Pull requests and feature requests are welcome!
  • Please file any issues you encounter.
  • For pull requests, please see the contribution guidelines.

Running tests

Tests can be run locally with nimble test.

CI runs the test suite for both C and C++ targets on:

  • Linux x86_64 and aarch64
  • macOS x86_64

The test suite is also run with LLVM thread sanitization to check for data races.