ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
233562 Топик полностью
rezident (14.01.2011 18:56, просмотров: 110) ответил Chum_A_ на Ну, заблокировал я доступ к переменной в main-е (к примеру), а тут прерывание. В прерывании смотрю - заблокировано, т.е. надо стоять до разблокировки, а кто разблокирует, если я не вышел из прерывания. Или я чего не догоняю?
Зачем ждать в прерывании-то? О_о В прерывании ожидать чего-либо вообще несколько криминально. Функция, обслуживающая прерывание, должна выполняться как можно быстрее. В main-е нельзя блокировать переменную, изменяемую в прерывании. Именно по причине недетерменированности момента вызова прерывания. Если нужен атомарный доступ к переменной, то нужно перед доступом к ней в main запретить прерывание, в котором переменная может быть модифицирована. Либо применить другие способы обеспечения атомарности доступа. Например, чтение во временную переменную и проверка сравнением.