링버퍼 구현에 대해 질문드립니다.
글쓴이: tyolee83 / 작성시간: 화, 2008/11/18 - 5:12오후
Prefetching을 링버퍼를 이용해 구현하려고 합니다.
구현하려는 링버퍼의 동작은 다음과 같습니다.
1. 버퍼에 데이터를 넣는 스레드가 떠 있어서 네트웍으로부터 일정한 크기(예: 1024)의 데이터를 얻어다가 버퍼에 집어넣습니다.
2. 버퍼에서 데이터를 가져가는 스레드는 임의의 크기의 데이터를 가져갑니다.
현재 구현은 head와 tail을 두고 tail이 head를 앞서지 않는 범위에서 각 스레드가 데이터를 버퍼에 넣거나, 버퍼에 있는 데이터를 가져가게끔 했습니다.
그런데 링 구조로 해서 head와 tail 값을 조절하다 보니 어려운 점이 많은데요...
혹시 이런 링 버퍼 구현에 참고할만한 자료나 조언 부탁드립니다.
http://elonen.iki.fi/code/misc-notes/ringbuffer/
이 문서는 읽어봤는데,
이게 딱 맞아 떨어지는지 잘 모르겠구요...(1바이트를 미리 읽어야 한다고 되어 있어서 조금 다른거 같다는 생각이 들었습니다)
슈도 코드와 C++ 코드가 잘 이해가 가지 않습니다....
고수님들 조언 부탁드립니다.
미리 감사드립니다.
Forums:
도움될까해서요.
1. 쓰레드를 각자 돌리더라도 일정 수치를 넘지 않는다면 순서가 문제가 되지 않는다면. 여러개 사용해도 될거 같습니다.
2. 메모리 한계를 넘지않는다면 현재 버퍼가 가득찼을경우에 버퍼를 블록단위로 늘려주고 줄여주면 링버퍼가 가득찼을때의 문제에 도움이 될것 같습니다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기