189 похожих чатов

День добрый. Я, наверное глупый вопрос задам, но кто как

поступает вот с такой задачей.
Вот есть программа которая работает по принципу фоновый цикл + прерывания. У меня есть переменная, которая изначально планировалась использоваться в фоне, а потом вот мне взбредет её использовать в прерывании. Есть какие ни будь способы это дело предусмотреть не используя volatile повсеместно? На первый взгляд на ум приходит только отключение прерываний в месте где используются переменные, которые могут использоваться в прерывании.

9 ответов

16 просмотров

привет. ну вообще просто делают функции чтения/записи с остановкой и возобновлением прерываний, но настолько ли это тебе критично?

jon-pedro Автор вопроса
Александр Баракин
привет. ну вообще просто делают функции чтения/зап...

Критичность лишь в том, что могут кривые данные считаться, если по середине чтения произойдёт изменение

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

jon-pedro Автор вопроса
Vyacheslav Olkhovchenkov
голову надо использовать не только для того, что б...

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

Andrey Ermakov
dis_irq;read;en_irq

либо функцию которая чет вернет когда данные точно готовы

А почему ты volatile не хочешь использовать то? Какие-то религиозные предпосылки? Ну и да, есть ещё такая штука, как примитивы синхронизации. Похоже пришло время почитать за них и их комбинацию с геттерами и сеттерами

Leonid Zaliubovskyi
А почему ты volatile не хочешь использовать то? Ка...

может там ide такая, что за исправление декларации деньги берет?

Vyacheslav Olkhovchenkov
может там ide такая, что за исправление декларации...

Умеешь заинтриговать, звучит как идея для стартапа

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта