Перекрестное чтение FreeRTOS

Безопасно ли, чтобы один поток модифицировал атомарную единицу (например, char), а другой только читал ее? В среде, которая позволяет это, конечно, как freertos.

Мне дали некоторый код, который делает именно это, он использует логическое значение (определяемое как char) в качестве семафора, я не уверен, почему они не использовали семафор только для ясности, но опять же я не вижу опасности в использовании char либо действительно.


person jayjay    schedule 06.06.2014    source источник


Ответы (1)


Это безопасно, если:

1.Ваши процессоры считывают символ в одной инструкции(что весьма вероятно)

2. Архитектура вашего процессора не такова, что при выполнении инструкции внешнее прерывание может изменить поток управления.

3. Пункт 2 действует только в том случае, если ваша переменная обновляется через ISR.

person Vagish    schedule 06.06.2014