-
- Кстати, поправочка, плохо я правило сформулировал. Например,
рассмотрим схему уарт — прерывания — кольцевой буфер на отправку —
указатели на голову и хвост кольцевого буфера. Указатель на голову
не меняется в прерывании, как и буфер на отправку. Но оба должны
быть volatile, чтобы компилятор не имел права поменять местами
запись в буфер и в указатель, иначе прерывание обработает отправку
неправильно. SciFi(181 знак., 08.06.2021 13:29)
- Никогда такого не наблюдал, хотя в каждом первом проекте VLLV(129 знак., 08.06.2021 16:38)
- Я наблюдал. Но это неточно :-) - SciFi(08.06.2021 16:39)
- Никогда такого не наблюдал, хотя в каждом первом проекте VLLV(129 знак., 08.06.2021 16:38)
- Чепуха. Всегда объявлял массивы приема передачи как обычные, ни
разу не было проблем с чтением переменных из массивов. Для IAR ARM.
Значит есть скрытое знание ;-) - misyachniy(08.06.2021 13:01)
- volatile нужно только для одиночных переменных типа int qaz; yuri_t2(51 знак., 08.06.2021 14:33, )
- Нет. - SciFi(08.06.2021 15:03)
- Вот ссылка: yuri_t2(490 знак., 08.06.2021 22:51, , ссылка)
- Там какая-то пурга написана. Не читайте всякую чушь, обращайтесь к
первоисточникам. - SciFi(09.06.2021 07:29)
- Может хватить балаболить? Выкладывайте первоисточники. - misyachniy(09.06.2021 08:12)
- А я не выложил? Прошу пардону >>> - SciFi(09.06.2021 08:16, ссылка)
- Может хватить балаболить? Выкладывайте первоисточники. - misyachniy(09.06.2021 08:12)
- Спасибо за ссылку. Всё же, как я читаю, это пояснение не говорит об отсутствии необходимости в модификаторе, а лишь уточняет, что наличие volatile не гарантирует атомарности доступа. - Nikolay_Po(09.06.2021 00:09)
- Там какая-то пурга написана. Не читайте всякую чушь, обращайтесь к
первоисточникам. - SciFi(09.06.2021 07:29)
- Типа баба Яга против? - misyachniy(08.06.2021 15:12)
- Нет в смысле "неправда". - SciFi(08.06.2021 15:13)
- Вот ссылка: yuri_t2(490 знак., 08.06.2021 22:51, , ссылка)
- Ммм... А где такое оговорено? В инструкции компилятора? Тоже где-то
попадалось, но, по-моему, справедливо только для старых
компиляторов. Современные уже оптимизируют работу с указателями,
структурами и массивами, поэтому можно "попасть". - Nikolay_Po(08.06.2021 14:51)
- А где такое оговорено "Современные уже оптимизируют работу с
указателями, структурами и массивами" и как определить по дате? Мой
2003 года выпуска. ;-) - misyachniy(08.06.2021 15:10)
- До появления link time optimization - старые. - Nikolay_Po(08.06.2021 16:52)
- А где такое оговорено "Современные уже оптимизируют работу с
указателями, структурами и массивами" и как определить по дате? Мой
2003 года выпуска. ;-) - misyachniy(08.06.2021 15:10)
- Нет. - SciFi(08.06.2021 15:03)
- Выходил победителем в русской рулетке? Везунчик, наверное :-) - SciFi(08.06.2021 13:03)
- Может просто оптимизацию отключал? Тогда это русская рулетка без патронов. - Andreas(08.06.2021 13:13)
- Я играю только с револьвером, с макаровым, говорят дела похуже
будут. - misyachniy(08.06.2021 13:04)
- С макаровым - это лига "чемпион чемпионов" специальной олимпиады. - Evgeny_CD(08.06.2021 13:12)
- volatile нужно только для одиночных переменных типа int qaz; yuri_t2(51 знак., 08.06.2021 14:33, )
- Кстати, поправочка, плохо я правило сформулировал. Например,
рассмотрим схему уарт — прерывания — кольцевой буфер на отправку —
указатели на голову и хвост кольцевого буфера. Указатель на голову
не меняется в прерывании, как и буфер на отправку. Но оба должны
быть volatile, чтобы компилятор не имел права поменять местами
запись в буфер и в указатель, иначе прерывание обработает отправку
неправильно. SciFi(181 знак., 08.06.2021 13:29)