ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
1005392 Топик полностью
LightElf (17.05.2020 22:13, просмотров: 774) ответил fk0 на Пункт 1 не вариант, пункт 4 тоже -- это говнокод. Пункт 3 -- черти что, зачем оно может быть нужно? Реальны варианты 2 и 5. 5) вывод блокируется до появления свободного места в буфере -- требует примитивов синхронизации. Зачем в варианте 2 атомарный инкремент, и инкремент чего? Указатель записи двигает только писатель, а указатель чтения двигает только читатель. Противоположная сторона в обоих случаях (читатель и писатель соответственно) только читают не свой указатель
Пункт 1) очень часто вполне пригоден, зря ты так. Например для тех же логов. Буфер не бесконечен, а останавливать программу "пока логгер не прочихается" - не самая красивая идея. Соответственно именно для логов вариант 3) может быть полезнее, чтобы хоть "последний выдох господина ПЖ" не потерять. В варианте 2 писатель должен двинуть и read_index и write_index. И вот для того, чтобы корректно двинуть read_index ему и нужен atomic_inc. Вариант 4 - самый простой и тупой, но не 

универсален и требует некоторых априорных знаний. Зачастую такие знания есть, и нет никакого смысла городить огород.

Не надо делать мне как лучше, оставьте мне как хорошо