-
- Пункт 1) очень часто вполне пригоден, зря ты так. Например для тех
же логов. Буфер не бесконечен, а останавливать программу "пока
логгер не прочихается" - не самая красивая идея. Соответственно
именно для логов вариант 3) может быть полезнее, чтобы хоть
"последний выдох господина ПЖ" не потерять. В варианте 2 писатель
должен двинуть и read_index и write_index. И вот для того, чтобы
корректно двинуть read_index ему и нужен atomic_inc. Вариант 4 -
самый простой и тупой, но не LightElf(116 знак., 17.05.2020 22:13)
- Вот самое забавное, когда отлаживаешься (от слова лажа :) ) таки
надо вставать, пока логгер не прочихается. А то грозит тем что
строчка "ram test failed, reset" успешно не будет записана... - RxTx(18.05.2020 00:07)
- На это я пойтить не могу. Такие баги надо обрабатывать уже после
ресета. - LightElf(18.05.2020 00:25)
- На это я могу сказать - "Кокой унтюресный у тебя RESET. Ты правда
считаешь что RESET должен так работать, оставляя что-то там в
каком-то состоянии?" RxTx(47 знак., 18.05.2020 20:13)
- Хорошим тоном является выяснять причину Reset-а. Это почти не больно. Там спецуевый регистр присопливлен. - LightElf(30.05.2020 21:50)
- На это я могу сказать - "Кокой унтюресный у тебя RESET. Ты правда
считаешь что RESET должен так работать, оставляя что-то там в
каком-то состоянии?" RxTx(47 знак., 18.05.2020 20:13)
- На это я пойтить не могу. Такие баги надо обрабатывать уже после
ресета. - LightElf(18.05.2020 00:25)
- Если останавливать не вариант -- пункт 2. Ибо в варианте 1
непонятно что делать. Останавливаться и мигать лампочкой? С
пропусками -- это варианты 2 и 3. "Последний выдох" и "новые данные
затирают последние записанные" несколько противоречиво. Что имеется
ввиду? И сколько последних записанных? Последний байт, строку?
"Последний выдох" -- это по-моему именно вариант 2 (новые данные
затирают самые старые не обработанные). В варианте 2 писатель не
должен двигать fk0(895 знак., 17.05.2020 22:52)
- Согласен, чета я все смешал в кучу. Упущен существенный вопрос, что представляют из себя "новые данные". Ежели это просто очередной символ - то набор вариантов один. Ежели это как-то форматированный блок данных (например строки лога) - то варианты другие. По поводу ковыряний с индексами - согласен, тоже вариант. Особенно на современных процах - сделал индекс типа uint32_t и лишних битов хватит на любой разумный размер буфера. - LightElf(17.05.2020 23:55)
- Вот самое забавное, когда отлаживаешься (от слова лажа :) ) таки
надо вставать, пока логгер не прочихается. А то грозит тем что
строчка "ram test failed, reset" успешно не будет записана... - RxTx(18.05.2020 00:07)
- Пункт 1) очень часто вполне пригоден, зря ты так. Например для тех
же логов. Буфер не бесконечен, а останавливать программу "пока
логгер не прочихается" - не самая красивая идея. Соответственно
именно для логов вариант 3) может быть полезнее, чтобы хоть
"последний выдох господина ПЖ" не потерять. В варианте 2 писатель
должен двинуть и read_index и write_index. И вот для того, чтобы
корректно двинуть read_index ему и нужен atomic_inc. Вариант 4 -
самый простой и тупой, но не LightElf(116 знак., 17.05.2020 22:13)