Например задача worker, в которую через очередь высокоприоритетные задачи передают функцию с аргументами на выполнение. Во взрослом по это что то типа тредпула наверно.
Допустимо
boost io_context::post
Похоже на привнесение Task Queue из области бэкендов в мир RTOS. Но так только запутаться можно и лучше следовать логике каждому task-у по своей собственной функции и пусть scheduler решает
Так организован пример Bluetooth A2DP в ESP-IDF.
у меня на подобном поведении построена вся логика программы. Только воркеры динамически создаются и удаляются когда уже не нужны.
в esp-idf вроде как реализация памяти без дефрагментации, так что лучше статический пул выделить, да и необходимости нет.
можно и статически, но тогда память всегда будет занята несколькими воркерами. С освобождением лучше, можно с пользой использовать свободную память при низкой загрузке. На фрагментацию пофиг, нет долгоживущих объектов. Все долгоживущие распределены статически.
Обсуждают сегодня