Pull to refresh

Comments 8

многозадачности на функциональных очередях

То что у вас описывается, есть обычная кооперативная многозадачность.
Делать отдельную очередь на каждый уровень приоритета — деталь реализации.

Да и сам по себе термин «функциональная очередь» у вас использован некорректно.
функциональная очередь не изменяет своего содержимого при добавлении элемента. Вместо
этого возвращается новая очередь, содержащая элемент.

Суммарная длительность времени, получаемого процессом, зависит от его приоритета.

Это как раз свойство нереалтаймовых систем. В RTOS поток с более высоким приоритетом получит столько времени сколько ему нужно, а поток с чуть более низким может не получить ничего.
Это даже не кооперативная многозадачность. Это вообще не много задачность, так как контекст сохраняется и вооставливается явно.
функциональная очередь не изменяет своего содержимого при добавлении элемента. Вместо
этого возвращается новая очередь, содержащая элемент.
Термин «функциональная очередь» в данном случае не имеет никакого отношения к функциональному программированию. Здесь он означает лишь то, что элементами, размещаемыми в очередях, являются функции, а точнее — указатели на них.
И, насколько я понимаю, RTOS характеризуется как раз тем, что гарантирует время отклика на сигнал. Т.е. если как-я-то задача находится в бесконечном цикле, но поступал сигнал, требующей обработки, задача будет принудительно прервана и управление передано обработчику сигнала.

Так что не стоит упоминать RTOS всуе. Это немного про другое :-)
Если внутри «суперцикла» bare metall проекта функции назвать «задачами», то этот проект все равно останется bare metall без ОС =).
По моему мнению ОС в МК решениях требуется тогда, когда необходимо вытеснение и переключение контекста (ну и гарантированное время отклика как написали выше для rtos ), что реализовать самому уже кудаааа сложнее =)

Подход хороший, но где тут многозадачность-то? Тут даже до упомянутой в комментариях кооперативной многозадачности дело не доходит: мы никогда не переключаемся с одной задачи на другую, максимум вызываем одну из другой.
(Претензии именно к терминам. Вторая – увидев слова "функциональная очередь" ожидал использования махровой функциональщины для обеспечения многозадачности, но нет, даже immutable-объектов не увидел)

Да, есть противоречия в превом же пункте, про большинство задач и задержки.
А главное, зачем отказываться от и так легковесной *RTOS?
Sign up to leave a comment.

Articles