LINUX.ORG.RU

Избранные сообщения ly

Lock-free Circular Fifo Buffer - возможно ли такое?

Форум — Development

Вот есть CircularFifoBuffer.
Его можно обернуть в BufferUtils.synchronizedBuffer(), тогда он будет синхронизованным, но, как я понимаю, не будет lock-free?

Возможно ли его сделать lock-free (CAS, как в AtomicInteger.incrementAndGet(), только здесь будет что-то вроде addAndRemove())?
Правильно ли я понимаю, что невозможно сделать атомарной операцию удаления одного элемента + добавление другого?

 , , ,

kovrik
()

kernel & futex = подстава от Ingo Molnár и Thomas Gleixner?

Форум — Development

Ну или поясните мне...

Для FUTEX_LOCK_PI захардкодили ERESTARTNOINTR и CLOCK_REALTIME.

Использование CLOCK_REALTIME без возможности CLOCK_MONOTIME еще можно понять.

Но почему жестко ERESTARTNOINTR, и никогда EINTR?

Почему нельзя прервать ожидание на pi-фьютексе сигналом? Только потому что glibc дизайнят загадочные люди?

Как веслом по морде, всплыло на юнит-тестах :(

 , , ,

ly
()

Поставьте мне мозг на место: GPLv3 + shared memory

Форум — Development

Было:
- есть код под GPLv3 (например вычисления);
- есть еще код под GPLv3 (различный транспорт);
- к этому добавлен main-модуль под GPLv3;
= тут все ясно и понятно, имеем проект под GPLv3.

Стало:
- к указанному GPLv3 проекту добавили код, реализующий транспорт через разделяемую память;
- координаты и формат данных в разделяемой памяти задаются в настройках/опциях, можно считать что работает интерпретатор или компилятор;
- все изменения исходников доступны;
= ну тоже понятно, имеем проект под GPLv3, в который внесены изменения, нарушений нет.

Туплю:
- есть проприетарная прога, которая создает именованный регион разделяемой памяти и производит с ним обмен;
- настройками двух проектов их можно «подружить», таким образом GPLv3 и не-GPL в каком-то смысле объединяются;
- обмен производится массивами (длина плюс линейно данные);
= вопрос, это нарушение GPLv3 или нет?

 , ,

ly
()