Part 1
요약·해설
SPSC는 2의 거듭제곱 크기 ring buffer를 사용하고, 생산과 소비를 여러 단계로 나누어 batch 처리할 수 있습니다.
Single
Single
Atomic ring buffer
Part 2
접을 수 있는 영어 원문 전체
영어 원문 전체 펼치기
831F6BEDC7459CD4A68499D3E4422B7B669C17A388DEB6508C7B805F65234A9E
.. _spsc_lockfree:
Single Producer Single Consumer Lock Free Queue
===============================================
A :dfn:`Single Producer Single Consumer Lock Free Queue (SPSC)` is a lock free
atomic ring buffer based queue.
API Reference
*************
.. doxygengroup:: spsc_lockfree
Part 3
한국어 전문 번역
SPSC(Single Producer Single Consumer Lock Free Queue)는 lock-free atomic ring buffer 기반 queue입니다.
API 참고
API group spsc_lockfree은 하나의 producer와 하나의 consumer를 위한 SPSC lock-free queue API입니다.
매크로와 정의
SPSC_INITIALIZER(sz, buf)SPSC를 정적으로 초기화합니다.
매개변수
sz: SPSC 크기이며 2, 4, 8처럼 2의 거듭제곱이어야 합니다.buf: buffer pointer
SPSC_DECLARE(name, type)SPSC를 위한 익명 구조체 형식을 선언합니다.
매개변수
name: 제공할 SPSC symbol 이름type: SPSC에 저장할 형식
SPSC_DEFINE(name, type, sz)고정 크기 SPSC를 정의합니다.
매개변수
name: 제공할 SPSC symbol 이름type: SPSC에 저장할 형식sz: SPSC 크기이며 2의 거듭제곱이어야 합니다.
spsc_size(spsc)SPSC queue의 크기를 얻습니다.
매개변수
spsc: SPSC reference
spsc_reset(spsc)SPSC가 비도록 초기화하거나 reset합니다. ISR이나 thread처럼 여러 호출 context에서 producer/consumer가 사용 중일 때 실행하는 것은 안전하지 않습니다.
매개변수
spsc: 초기화하거나 reset할 SPSC
spsc_acquire(spsc)SPSC에서 생산할 element 하나를 확보합니다.
매개변수
spsc: 생산용 element를 확보할 SPSC
반환값: 확보한 element의 pointer를 반환하며 SPSC가 가득 차 있으면
NULL을 반환합니다.spsc_produce(spsc)앞서 확보한 element 하나를 SPSC에 생산하여 consumer가 즉시 사용할 수 있게 합니다.
매개변수
spsc: 앞서 확보한 element를 생산할 SPSC. 대상이 없으면 아무 작업도 하지 않습니다.
spsc_produce_all(spsc)앞서 확보한 모든 element를 생산하여 consumer가 즉시 사용할 수 있게 합니다.
매개변수
spsc: 확보한 element 전체를 생산할 SPSC. 대상이 없으면 아무 작업도 하지 않습니다.
spsc_drop_all(spsc)앞서 확보한 모든 element를 버려 다시 확보할 수 있게 합니다.
매개변수
spsc: 확보한 element 전체를 버릴 SPSC. 대상이 없으면 아무 작업도 하지 않습니다.
spsc_consume(spsc)SPSC에서 element 하나를 소비합니다.
매개변수
spsc: 소비할 SPSC
반환값: Element pointer를 반환하며 소비할 element가 없으면
NULL을 반환합니다.spsc_release(spsc)소비한 element 하나를 해제합니다.
매개변수
spsc: 소비한 element를 해제할 SPSC. 대상이 없으면 아무 작업도 하지 않습니다.
spsc_release_all(spsc)소비한 모든 element를 해제합니다.
매개변수
spsc: 소비한 element 전체를 해제할 SPSC. 대상이 없으면 아무 작업도 하지 않습니다.
spsc_acquirable(spsc)SPSC에서 확보 가능한 항목 수를 얻습니다.
매개변수
spsc: 항목 수를 조회할 SPSC
spsc_consumable(spsc)SPSC에서 소비 가능한 항목 수를 얻습니다.
매개변수
spsc: 항목 수를 조회할 SPSC
spsc_peek(spsc)Queue에서 첫 번째 사용 가능 항목을 확인하되 소비하지 않습니다.
매개변수
spsc: 확인할 SPSC
반환값: Element pointer를 반환하며 소비할 element가 없으면
NULL을 반환합니다.spsc_next(spsc, item)주어진 항목 다음에 있는 queue 항목을 확인합니다.
매개변수
spsc: 확인할 SPSCitem: queue 안의 항목 pointer
반환값: 다음 element pointer를 반환하며 더 없으면
NULL을 반환합니다.spsc_prev(spsc, item)주어진 항목 앞에 있는 queue 항목을 얻습니다.
매개변수
spsc: 확인할 SPSCitem: queue 안의 항목 pointer
반환값: 이전 element pointer를 반환하며 더 없으면
NULL을 반환합니다.
구조체
struct spsc공통 SPSC 속성입니다. 경고: 제공되는 macro를 통하지 않고 직접 조작하면 안 됩니다.
Source
출처
영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.