2011-08-16 2 views
4

바이너리 프로그램 출력을 I/O에 비동기 적으로 덤프하려면 C에 공유 버퍼 (1R 스레드/1W 스레드)를 코딩해야합니다. 저는 보통 간단한 공유 버퍼를 작성할 때 고전적인 순환 버퍼 구현을 사용합니다. 그러나이 경우 버퍼의 각 항목의 크기는 가변적이며 컴파일 시간에는 알려지지 않습니다. 가변 크기 항목이있는 순환 버퍼를 구현할 수 있는지 궁금합니다.가변 크기 항목을 사용한 순환 버퍼 구현

감사합니다.

답변

3

순환 이진 스트림으로 생각할 수 있습니다. 즉, 요소를 추가하는 경우 데이터를 쓰는 대신 터지기 대신 읽게됩니다.

+0

어떻게 읽으려면 크기를 추적 하시겠습니까? 쓰기 색인에 직접 기록 하시겠습니까? – ziu

+2

당신은 버퍼에'struct {int size_payload; char * payload}', 처음'int'를 읽은 후에 페이로드 (가변 크기 항목) –