-
- Что значит "забить на атомарность"? Я как раз на нее не забиваю, а наоборот учитываю. Суть в том, что если обработчик прерывания только пишет в ячейку, а задача только читает - то им не нужны критические секции вообще. Но если вдобавок мы знаем, LightElf(179 знак., 21.11.2015 01:50)
- Гм. А я-то, по простоте своей, думал что правило атомарности негабаритных переменных кардинально другое: "если обработчик читает переменную - делай в фоне критическую секцию лишь при ее записи; а если обработчик пишет переменную - делай Олдфаг(290 знак., 21.11.2015 08:16, )
- Если на каждый чих городить критическую секцию - то мегагерцы слипнутся. С такими формулировками "негабаритные переменные" и "любое мероприятие по принуждению к атомарности" вообще непонятно что обсуждать. Есть устоявшиеся определения для LightElf(514 знак., 21.11.2015 12:21)
- Как AVR и его GCC вспомню, так страшно. Там оптимизатор такие фокусы выделывает. Для AVR вот что fk0(747 знак., 21.11.2015 12:46, ссылка)
- Прекрасно. Давайте и рассмотрим Ваше кредо: не защищать только пишущуюся в прерывании и только читаемую в задаче переменную int16. Назначаем служебное расследование. Позиция1: AVR, мы в задаче считали первый байт от int16 из памяти в регистр и... Олдфаг(371 знак., 21.11.2015 12:35, )
- Я ждал!!!! :) LightElf(486 знак., 21.11.2015 12:43 - 12:55)
- Вы издеваетесь? Я же специально говорил для особо хитрых, что неважно какие мероприятия проводятся по принуждению к атомарности и как их назвать, лишь бы они были и работали. Ваше мероприятие известно со времён 8051 как многократное считывание Олдфаг(157 знак., 21.11.2015 12:55, )
- Определение атомарности я дал выше. Если вы с ним не согласны, то с этого и надо начинать. Приведенная функция, что характерно, не атомарна и обходится без критической секции. У нее множество недостатков, но в C89 "маемо що маемо". - LightElf(21.11.2015 13:02)
- Ещё раз: почитайте по ссылкам Буденновца. Способов достижения атомарности немало. - Олдфаг(21.11.2015 13:12, )
- Что-то я не догоняю. А где гарантия, что два раза считается правильно? fk0(471 знак., 21.11.2015 13:00)
- Нет, там для таймеров порядок считывания был H1,L1, потом повторно H2 и проверка H1==H2, после чего либо годно либо начать чтение сначала. - Олдфаг(21.11.2015 13:10, )
- Ну это только для таймеров годится. - fk0(21.11.2015 13:20)
- Ну дык я сразу и сказал. Для таймеров и программных многобайтных счетчиков, которые инкрементираются в прерывании. - Олдфаг(21.11.2015 13:26, )
- Ну это только для таймеров годится. - fk0(21.11.2015 13:20)
- Уел :) Ессно есть некоторые допущения по частоте следования этих прерываний. Иначе функа может поломаться несколькими способами, как вариант она может никогда не завершиться. Я с ее помощью читаю счетчик таймаута, который из прерывания LightElf(18 знак., 21.11.2015 13:08)
- Нет, там для таймеров порядок считывания был H1,L1, потом повторно H2 и проверка H1==H2, после чего либо годно либо начать чтение сначала. - Олдфаг(21.11.2015 13:10, )
- Определение атомарности я дал выше. Если вы с ним не согласны, то с этого и надо начинать. Приведенная функция, что характерно, не атомарна и обходится без критической секции. У нее множество недостатков, но в C89 "маемо що маемо". - LightElf(21.11.2015 13:02)
- Вот любят размазать на 20 строк, что можно написать в одну: fk0(48 знак., 21.11.2015 12:55)
- Тоже при частом toggle значения в памяти можно попасться) - Олдфаг(21.11.2015 13:17, )
- Можно и так :) PS. А вообще: хороший, годный срач получился. - LightElf(21.11.2015 13:11 - 13:15)
- Вы издеваетесь? Я же специально говорил для особо хитрых, что неважно какие мероприятия проводятся по принуждению к атомарности и как их назвать, лишь бы они были и работали. Ваше мероприятие известно со времён 8051 как многократное считывание Олдфаг(157 знак., 21.11.2015 12:55, )
- Я ждал!!!! :) LightElf(486 знак., 21.11.2015 12:43 - 12:55)
- Если на каждый чих городить критическую секцию - то мегагерцы слипнутся. С такими формулировками "негабаритные переменные" и "любое мероприятие по принуждению к атомарности" вообще непонятно что обсуждать. Есть устоявшиеся определения для LightElf(514 знак., 21.11.2015 12:21)
- Гм. А я-то, по простоте своей, думал что правило атомарности негабаритных переменных кардинально другое: "если обработчик читает переменную - делай в фоне критическую секцию лишь при ее записи; а если обработчик пишет переменную - делай Олдфаг(290 знак., 21.11.2015 08:16, )
- Что значит "забить на атомарность"? Я как раз на нее не забиваю, а наоборот учитываю. Суть в том, что если обработчик прерывания только пишет в ячейку, а задача только читает - то им не нужны критические секции вообще. Но если вдобавок мы знаем, LightElf(179 знак., 21.11.2015 01:50)