поступает вот с такой задачей.
Вот есть программа которая работает по принципу фоновый цикл + прерывания. У меня есть переменная, которая изначально планировалась использоваться в фоне, а потом вот мне взбредет её использовать в прерывании. Есть какие ни будь способы это дело предусмотреть не используя volatile повсеместно? На первый взгляд на ум приходит только отключение прерываний в месте где используются переменные, которые могут использоваться в прерывании.
привет. ну вообще просто делают функции чтения/записи с остановкой и возобновлением прерываний, но настолько ли это тебе критично?
Критичность лишь в том, что могут кривые данные считаться, если по середине чтения произойдёт изменение
голову надо использовать не только для того, что бы в неё есть. почему тебя не смущают другие подобные ситуации, например были в переменной метры а ты решил там хранить километры?
Немного не корректный пример, как мне кажется. Суть же в том, что если у меня данные хранятся разбито из-за разрядности и размера данных, то если я прочитаю первую часть данных, а потом изменю в прерывании, после чего вернусь обратно, то у меня будет половина старых бит и половина новых, что может быть критично
dis_irq;read;en_irq
либо функцию которая чет вернет когда данные точно готовы
А почему ты volatile не хочешь использовать то? Какие-то религиозные предпосылки? Ну и да, есть ещё такая штука, как примитивы синхронизации. Похоже пришло время почитать за них и их комбинацию с геттерами и сеттерами
может там ide такая, что за исправление декларации деньги берет?
Умеешь заинтриговать, звучит как идея для стартапа
Обсуждают сегодня