awesome-repositories.com
Blog
awesome-repositories.com

Entdecke die besten Open-Source-Repositories mit KI-gestützter Suche.

EntdeckenKuratierte SuchenOpen-Source-AlternativenSelf-hosted SoftwareBlogSitemap
ProjektÜber unsRanking-MethodikPresseMCP-Server
RechtlichesDatenschutzAGB
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
cameron314 avatar

cameron314/readerwriterqueue

0
View on GitHub↗
4,576 Stars·731 Forks·C++·2 Aufrufe

Readerwriterqueue

Dieses Projekt ist eine Single-Producer-Single-Consumer-Concurrent-Queue für C++, die für den lock-freien Datenaustausch zwischen Threads entwickelt wurde. Sie bietet einen thread-sicheren Mechanismus zur Datenübertragung ohne die Verwendung von Mutexes oder Locks.

Die Queue ist als zusammenhängender Ringpuffer implementiert, der dynamisches Kapazitätswachstum unterstützt, um Datenverlust bei Erreichen des Limits zu verhindern. Sie nutzt atomare Synchronisation und warteschlangenfreies Index-Management, um den Datenzugriff zwischen Schreib- und Lese-Threads zu koordinieren.

Die Bibliothek deckt die Inter-Thread-Kommunikation und Pufferverwaltung ab und bietet sowohl blockierende als auch nicht-blockierende Dequeue-Operationen, um zu steuern, wie konsumierende Threads auf neue Daten warten.

Features

  • Single-Producer Single-Consumer Queues - Implements a specialized single-producer single-consumer model to eliminate contention and minimize synchronization overhead.
  • Lock-Free Thread Communication - Provides high-performance primitives for transferring data between threads without the overhead of mutex locking.
  • Thread-Safe Communication Channels - Offers a high-performance C++ data structure for safe information passing between concurrent threads.
  • Circular Memory Buffers - Uses a ring-based memory layout to efficiently reuse space for data exchange between threads.
  • Contiguous Memory Buffers - Allocates elements in flat, contiguous memory blocks to optimize cache locality and reduce latency.
  • Lock-Free - Employs atomic primitives and memory barriers to ensure thread-safe data exchange without mutex locks.
  • Buffer Capacity Growth - Supports dynamic allocation of larger contiguous blocks when the queue reaches capacity to prevent data loss.
  • Wait-Free Synchronization - Manages head and tail indices using atomic integers to guarantee progress for both producer and consumer.
  • Dynamic Buffer Management - Manages queue elements by combining upfront memory reservation with dynamic capacity expansion.
  • Low Latency Messaging - Minimizes message delivery delay between threads by avoiding traditional mutex synchronization.
  • Inter-Thread Buffer Management - Handles data streams between threads using a contiguous memory buffer that grows as demand increases.
  • Blocking Synchronization - Implements mechanisms to suspend consumer threads until the producer adds new data to the queue.
  • Concurrency and Parallelism - Fast single-producer single-consumer lock-free queue.

Star-Verlauf

Star-Verlauf für cameron314/readerwriterqueueStar-Verlauf für cameron314/readerwriterqueue

KI-Suche

Entdecke weitere awesome Repositories

Beschreibe in einfachen Worten, was du brauchst — die KI bewertet tausende kuratierte Open-Source-Projekte nach Relevanz.

Start searching with AI

Open-Source-Alternativen zu Readerwriterqueue

Ähnliche Open-Source-Projekte, sortiert nach der Anzahl der gemeinsamen Funktionen mit Readerwriterqueue.
  • cameron314/concurrentqueueAvatar von cameron314

    cameron314/concurrentqueue

    12,070Auf GitHub ansehen↗

    ConcurrentQueue is a header-only C++ template library that provides a lock-free data structure for multi-producer multi-consumer thread communication. It functions as a synchronization primitive designed to coordinate data flow between concurrent execution units using atomic operations rather than traditional mutex locking. The library distinguishes itself through a design that minimizes contention and synchronization overhead. It utilizes sub-queue token mapping to distribute workloads across partitioned internal queues and supports bulk operations to transfer multiple data elements in singl

    C++
    Auf GitHub ansehen↗12,070
  • workiva/go-datastructuresAvatar von Workiva

    Workiva/go-datastructures

    7,901Auf GitHub ansehen↗

    go-datastructures is a collection of thread-safe and lock-free data structures designed for high-performance concurrent applications in Go. It provides a modular library of specialized algorithmic toolsets, including a lock-free collection library and an immutable data structure library. The project distinguishes itself through a suite of persistent AVL trees and hash array mapped tries that use branch-copying to preserve previous versions. It also implements non-blocking hash maps, queues, and tries that enable linearizable snapshots and concurrent updates without the use of mutual exclusion

    Go
    Auf GitHub ansehen↗7,901
  • ruby-concurrency/concurrent-rubyAvatar von ruby-concurrency

    ruby-concurrency/concurrent-ruby

    5,830Auf GitHub ansehen↗

    Concurrent Ruby is a comprehensive concurrency toolkit for the Ruby language that provides thread-safe data structures, synchronization primitives, and asynchronous execution patterns. It implements core concurrency abstractions including an actor model framework where isolated actors communicate through asynchronous message passing, a future and promise system for composing non-blocking operations, and thread pool executors that manage reusable worker threads for concurrent task execution. The library distinguishes itself through a broad set of coordination mechanisms that go beyond basic th

    Ruby
    Auf GitHub ansehen↗5,830
  • jctools/jctoolsAvatar von JCTools

    JCTools/JCTools

    3,851Auf GitHub ansehen↗

    JCTools is a Java concurrency library providing a collection of lock-less and wait-free data structures. It serves as a toolkit for managing thread-safe data exchange, specifically designed to optimize high-throughput messaging and producer-consumer patterns in multi-threaded applications. The library distinguishes itself by implementing specialized queue structures that minimize contention and maximize throughput. By utilizing techniques such as cache-line padding, memory-barrier-based synchronization, and relaxed-consistency memory ordering, it avoids the performance bottlenecks often assoc

    Javaawesomebenchmarksconcurrency
    Auf GitHub ansehen↗3,851
Alle 30 Alternativen zu Readerwriterqueue anzeigen→

Häufig gestellte Fragen

Was macht cameron314/readerwriterqueue?

Dieses Projekt ist eine Single-Producer-Single-Consumer-Concurrent-Queue für C++, die für den lock-freien Datenaustausch zwischen Threads entwickelt wurde. Sie bietet einen thread-sicheren Mechanismus zur Datenübertragung ohne die Verwendung von Mutexes oder Locks.

Was sind die Hauptfunktionen von cameron314/readerwriterqueue?

Die Hauptfunktionen von cameron314/readerwriterqueue sind: Single-Producer Single-Consumer Queues, Lock-Free Thread Communication, Thread-Safe Communication Channels, Circular Memory Buffers, Contiguous Memory Buffers, Lock-Free, Buffer Capacity Growth, Wait-Free Synchronization.

Welche Open-Source-Alternativen gibt es zu cameron314/readerwriterqueue?

Open-Source-Alternativen zu cameron314/readerwriterqueue sind unter anderem: cameron314/concurrentqueue — ConcurrentQueue is a header-only C++ template library that provides a lock-free data structure for multi-producer… workiva/go-datastructures — go-datastructures is a collection of thread-safe and lock-free data structures designed for high-performance… ruby-concurrency/concurrent-ruby — Concurrent Ruby is a comprehensive concurrency toolkit for the Ruby language that provides thread-safe data… jctools/jctools — JCTools is a Java concurrency library providing a collection of lock-less and wait-free data structures. It serves as… coocood/freecache — freecache is a high-performance, concurrent in-memory key-value store library for Go applications. It functions as a… dpilger26/numcpp — NumCpp is a C++ framework and numerical computing library that provides a toolkit for multi-dimensional array…