Skip to content

Multiple Producers Single Consumer Batching Concurrent Queue #10

@epeshk

Description

@epeshk

Add a new concurrency primitive - MPSC (Multiple Producers Single Consumer) Batching Concurrent Queue. The main purpose of this queue is to optimize logging libraries.

The new queue should be faster (throughput-first, then latency) than Channel<T>, and BlockingCollection<T>.

  • Java Disruptor, used in the log4j2
  • dpdk ring with burst dequeues
  • Infinite array? One fetch-and-add for most enqueues, segments could be recycled in the single consumer scenario.
  • Linked list queue (non batching).
  • ConcurrentBoundedQueue. A simple implementation that must be compared to a complex one (to argue that a complex implementation is needed at all)
  • HellBrick.AsyncCollections - implementation for comparison, and becnhmarks
  • DataflowChannel - unordered, for comparison

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions