Comments 9
Но многоядерных процессорах тоже??
Зависит от того, что же вам надо. "Крутиться в фоне" — это по сути является созданием еще одного потока, просто с более низким приоритетом и уйти от его создания вы никак не сможете. Вопрос лишь в том, создавать ли поток на каждую такую задачу или сделать низкоприоритетную рабочую очередь.
Подобным образом реализовано передача заданий в lwIP: есть очередь из структур, одним из полей которого является указатель на функцию, а другим — ее аргументы (лямбды в С++ делают что-то похожее). Задача рабочей очереди берет задание, выполняет его в своем контексте, а по завершению семафорит о завершении.
Ключевое здесь: "в своем контексте". То есть у "фонового процесса" есть свой стек и контекст.
Наличие или отсутствие "рабочей очереди" зависит от реализации конкретной RTOS.
Как понять, что пора переходить на ОСРВ или еще рано? Пока все неплохо работает без ОС
Вся правда об ОСРВ от Колина Уоллса. Статья #3. Задачи и планирование