LINUX.ORG.RU

Нет. Смотреть стандартную библиотеку бесплатно, без SMS: info libc

anonymous
()

Я сам писал реализацию кольцевого буфера и strcm() на ней прекрасно работает.

В С++ проблем не должно возникнуть для любой реализации.

anonymous
()
Ответ на: комментарий от Eddy_Em

А что, есть какие-то стандартные кольцевые буферы?

указатель на tail, указатель на head, один записывает данные и смещает head, другой их обрабаиывает и смещает tail

видимо автор такой буфер имеет в виду.

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

Да нет: я имел в виду какие-нибудь «стандартные» кольцевые буферы из glibc.

Eddy_Em ☆☆☆☆☆
()

ТС, я бы на твоем месте сделал так (если, конечно, не жалко памяти).

Допустим, тебе нужен кольцевой буфер размером N байт. Выделяем памяти (3*N - 2) байт для двунаправленного кольца или (2*N - 1) байт для однонаправленного.

«Нулевой» указатель на начало буфера помещаем в позиции (N-1) или 0 (0 - если у нас однонаправленный буфер, который будет заполняться справа).

По мере заполнения буфера перемещаем указатель на начало. Как только «упремся» в одну из стенок, делаем memmove на середину.

В этом случае обычные строковые функции в легкую будут с буфером работать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

получить последние N событий перед сигналом, например.

qnikst ★★★★★
()
Ответ на: комментарий от Harald

В стандартной библиотеке языка C нет кольцевых буферов. Кроме того стандартная библиотека языка C настолько проста и мала, что задавать вопросы о том что там есть и чего там нет просто неприлично. Но я ждал топикстартера.

KblCb ★★★★★
()
Ответ на: комментарий от Eddy_Em

Подписываюсь на вопрос

Допустим, тебе нужен кольцевой буфер размером N байт. Выделяем памяти (3*N - 2) байт для двунаправленного кольца или (2*N - 1) байт для однонаправленного.

Ага, мне в ядре ось еле еле удалось уговорить выделить непрерывно лежащих страниц на несколько десятков мегабайт ибо устройство снизу это требует(иначе просто не успевает), а ты предлагаешь выделять в 2-3 раза больше? Не пойдет.

FeyFre ★★★★
()
Ответ на: Подписываюсь на вопрос от FeyFre

непрерывно лежащих страниц на несколько десятков мегабайт

А тебе не пофиг, как они там лежат? Ведро позаботится, чтобы для тебя они выглядели непрерывными.

Eddy_Em ☆☆☆☆☆
()

Кольцевой буфер неплохо реализован в Boost, там в частности предлагают сравнивать половинки сообщений с тем что требуется.

AlexVR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.