LINUX.ORG.RU

Оптимизированный циклический буфер

Этот трюк обычно называют magic ring buffer, mirrored ring buffer или virtual ring buffer.

Пользуйтесь на здоровье.

Спасибо, конечно. Но разве ты не забыл про поддержку многопоточности?

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

Мои задачи не требуют многопоточности.

Если мне потребуется,— то весною будет много-поточная версия.

PS: patches are welcome

cvv ★★★★★
() автор топика
Последнее исправление: cvv (всего исправлений: 1)

@copyright BSD

2 clause, 3 clause, 4 clause? Их же там целый зоопарк, поэтому текст явно и задают, хоть в LICENSE файле.

P.S. В коде каша из пробелов и табов.

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

На первый взгляд использовать алгоритмы с liblfds в моей библиотеке будет проблематично. Погодя копну глубже.

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

Подразумевалась 3 clause.

Может к следующему релизу поравлю.

На текущий момент я удовлетворится тем что отдебажил и оттестировал.

cvv ★★★★★
() автор топика

Возьми с полки пирожок, но огорчу - не тянет вообще ни на что. Меньше сотни строк на скору руку наговняконого кода под непонятно какой лицензией, без установки, без экспортированных целей, с захардкоженными флагами несовместимыми с cl, без CI, без инфы о покрытии, да господи - даже отступы неконсистентны.

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

Меньше сотни строк на скору руку наговняконого кода

Альтернативных реализаций под permissive лицензиями не существует.

без установки

Установка не предполагается. Предполагается исключительно copy-paste.

без экспортированных целей

Это намек на кривой CMakeLists.txt ?

с захардкоженными флагами несовместимыми с cl

А можно тут подробнее?

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

Альтернативных реализаций под permissive лицензиями не существует.

Но и у тебя не пермиссивная.

Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0)

NeXTSTEP ★★
()
COMPILE_OPTIONS "-g;-O2;-pthread;-Wall;-Wextra;-std=gnu99"

но зачем?

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

без CI, без инфы о покрытии, да господи - даже отступы неконсистентны

Это мелочи. А сборка да - не слишком хороша

DllMain
()
Ответ на: комментарий от slovazap

Возьми с полки пирожок, но огорчу - не тянет вообще ни на что. Меньше сотни строк на скору руку наговняконого кода под непонятно какой лицензией, без установки, без экспортированных целей, с захардкоженными флагами несовместимыми с cl, без CI, без инфы о покрытии, да господи - даже отступы неконсистентны.

Давай ссылки на свои проекты, посмеемся вместе, а то от тебя на этом форуме пока только одни завывания о том, как «правильно делать». Типичный форумный философ-балабол, увы.

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

А можно тут подробнее?

-g

Задаётся установкой CMAKE_BUILD_TYPE в Debug или RelWithDebInfo

-O2

Тоже CMAKE_BUILD_TYPE

-std=gnu99

target_compile_features(${cmake_target_name} PUBLIC/PRIVATE c_std_99), екстеншены компиляторы включены по умолчанию

-Wall -Wextra

Таки придётся под условие прятать

if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
  target_compile_options(${cmake_target_name} PUBLIC/PRIVATE -Wall -Wextra)
endif ()

-pthread

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(${cmake_target_name} INTERFACE Threads::Threads)
DllMain
()
Ответ на: комментарий от RazrFalcon

И не стыдно публиковать такое?

Я уверен, многие люди здесь впервые узнали об этом способе реализации циклического буфера после прочтения кода или статей по ссылкам. И ты вместо того, чтобы сказать мол «Спасибо тебе, мил-человек, благодаря тебе я сегодня узнал что-то новое», ты начинаешь ерепениться. Типичный Разорванный Флакон.

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

И не стыдно публиковать такое?

Это Open Source, детка! Здесь никто никому ничего не должен. Если хочешь, можешь прислать патч. Ах да, ты же C не осилил, тогда понятно. Человек боится того, чего не понимает, как говорится.

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

Я хотел копнуть глубже но где-то запутался.

cvv ★★★★★
() автор топика

Оу. Вот это прикольно. Было интересно посмотреть. Спасибо ТС.

//P.S. В авторах первым идет Луций Анней Сенека. А он какой вклад внес?

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

Благодарю за комментарии. Это мой второй проэкт на CMake. У меня были большие проблемы обеспечения совместимости между различными версиями CMake.

Кстати, у тебя нет идей что подразумевал тот парень под cl?

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

Хэдер большей частью написан им и предоставлен под лицензией CC.

У него была и реализация, но для какой то непопулярной ОС.

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

У меня были большие проблемы обеспечения совместимости между различными версиями CMake

С таким не сталкивался. Кстати, чёт я сразу не посмотрел

cmake_minimum_required(VERSION 2.8.9)

nам много чего нет, ЕМНИП. Я бы 3.5 посоветовал

что подразумевал тот парень под cl?

Компилятор от microsoft, разве что ) А так не знаю

DllMain
()
Ответ на: комментарий от cvv

У него была и реализация, но для какой то непопулярной ОС.

Наверное это была какая-нибудь RomeOS.

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

Я бы 3.5 посоветовал

Я лично использую этот код в местах где нет возможности обновится. И часть тех странных решений - из-за того что современные CMake имеют плохую обратную совместимость с 2.8.9

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

нет возможности обновится

Вот оно что. Тогда, наверное, под условия придётся многое загонять, благо CMAKE_C_COMPILER_ID и CMAKE_C_COMPILER_VERSION в 2.8 есть. Но вообще, если cmake - то 3.x, иначе довольно неудобно получается(сам cmake, кстати, собирается на раз-два)

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

Ц меня основной компонент проэкта использует CMake, отсюдова CMake по всему проэкту.

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

Нормальную установку всё равно написать сложно, а тут либа на пару файлов

DllMain
()

Автор молодец, а его тут прессуют с какими-то покрытиями

Зачем вы так, товарищи? Народ ждал

deadplace
()

это и весь говнокод в который вы смогли вложить свой опыт

Linux guru. 18 year of experience in Linux.

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