सभी किताबें

पेशेवर

ऐप्स परिचय Coach लॉग इन पढ़ना शुरू करें

Quantitative Finance · शब्दावली

Ring buffer, single-producer single-consumer queue क्या है?

अन्य नाम: ring buffer · single-producer single-consumer queue

Definition 12.1 Low-Latency Software · अध्याय 12 — Queues, Ring Buffers and Shared Memory

A ring buffer is a fixed array of slots used circularly: a writer’s position and a reader’s position increase forever and index the array modulo its size, a power of two so that the modulo is a mask. A single-producer single-consumer queue (SPSC) is a ring with exactly one writing thread and one reading thread; each position is written by one thread only, so no compare-and-swap is needed.

A ring of eight slots after five messages were written and two read (the state of the build’s shared fixture). The producer’s and consumer’s positions each sit on a cache line of their own and only grow; the slot of position p is p 8.
Figure 12.1. A ring of eight slots after five messages were written and two read (the state of the build’s shared fixture). The producer’s and consumer’s positions each sit on a cache line of their own and only grow; the slot of position pp is p mod 8p \bmod 8.
Round trips of an eight-byte message between two pinned threads (or processes) through two SPSC rings, and through two queues protected by a mutex and a condition variable; 100 000 round trips each. Measured on a laptop (Intel Core Ultra 7 155H) under WSL2, no isolated cores. Data: bench_rings.py.
Figure 12.2. Round trips of an eight-byte message between two pinned threads (or processes) through two SPSC rings, and through two queues protected by a mutex and a condition variable; 100 000 round trips each. Measured on a laptop (Intel Core Ultra 7 155H) under WSL2, no isolated cores. Data: bench_rings.py.
अध्याय में पढ़ें →