Skip to main content

Module chunk_ring

Module chunk_ring 

Source
Expand description

完成 AudioChunk の SPSC リング(ringbuf バック)。

満杯時は最古を pop して新規を push する(DROP_OLDEST)。ドロップ数を AtomicU64 で数えて次チャンクの dropped_before に反映する。consumer は try_pop()

ringbuf の overwrite(push_overwrite)は producer が最古を pop する必要があり、 これは consumer 側のインデックスにも触れるので SPSC のロックフリー前提を満たさない (overwrite を並行に行うにはロックが要る)。このリングの producer は RT スレッド ではなく取り込み/加工スレッド(通常優先度)なので、リング本体を短い Mutex で保護する。RT 経路(crate::raw_ring)はこのロックに触れない。

Structs§

ChunkConsumer
poll スレッド側のハンドル。try_pop で消費する。
ChunkProducer
加工スレッド側のハンドル。DROP_OLDEST 方針で push する。

Functions§

chunk_ring
容量 capacity_chunks のチャンクリングを作る。