Skip to content

staticlibs/staticlib_concurrent

Repository files navigation

Staticlibs Concurrent library

travis appveyor

This project is a part of Staticlibs.

This project contains the following concurrency-related templates:

  • spsc_concurrent_queue wait-free queue with fixed-size heap storage
  • spsc_waiting_queue the same as previous one with optional blocking take operation
  • spsc_inobject_concurrent_queue wait-free queue with fixed-size in-object (on-stack for stack allocated queue) storage
  • spsc_inobject_waiting_queue the same as previous one with optional blocking take operation
  • mpmc_blocking_queue optionally bounded growing FIFO blocking queue with support for blocking and non-blocking multiple consumers and always non-blocking multiple producers
  • condition_latch spurious-wakeup-free lock that uses arbitrary "condition" functor to check locked/unlocked state
  • countdown_latch synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes
  • growing_buffer non-shrinkable char heap buffer with non-destructive move (the same as copy) logic, grows if needed on move-in operation

All queues and locks are non-copyable, non-movable and inherit from enable_shared_from_this to be used inside std::shared_ptr.

This library is header-only and has no dependencies.

Link to the API documentation.

License information

This project is released under the Apache License 2.0.

Changelog

2018-06-12

  • version 1.0.3
  • drop timer wrapper

2017-12-22

  • version 1.0.2
  • vs2017 support

2017-04-10

  • version 1.0.1
  • minor cmake fixes

2017-02-24

  • initial public version

About

Staticlibs Concurrent library

Resources

License

Stars

Watchers

Forks

Packages

No packages published