Есть ли способ переопределить класс потока в C ++ для использования зависящей от платформы ОСРВ?
Нет простого способа сделать это, но были попытки сделать это с помощью другие, как указал @ Артур Пассо. Даже если это не просто переопределение классов c, определяемых операционной системой, вместо этого вам нужно перехватывать вызовы слишком цепочки, чтобы просматривать API FreeRTOS всякий раз, когда требуется вызов ОС c. Это, в свою очередь, поднимает так много вопросов о том, как поддерживать работоспособность в разных версиях компилятора.
Поскольку я проводил подобное исследование несколько месяцев или go, я считаю, что наилучшим из возможных решений будет одно из следующих. ( Я бы лично выбрал вариант 1, учитывая степень гибкости и удобства обслуживания ).
Создайте собственный уровень абстракции ОС C ++ поверх CMSIS OS API , который поддерживается большинством поставщиков RTOS (FreeRTOS, KeilRTX, Chibi поддерживают его, я уверен, что u c -OS также делает это). Это облегчает использование одной абстракции со многими ОСРВ, если ваша система сборки способна связывать нужные файлы в зависимости от используемой ОСРВ. Это в то же время дает вам полную гибкость в настройке приоритетов потоков, размеров стеков и т. Д. c. что может быть невозможно, если вы go используете что-то вроде posix api.
Создайте свой собственный уровень абстракции C ++ OS поверх API POSIX. FreeRTOS предоставляет POSIX API https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_POSIX/index.html, я уверен, что у других будет аналогичный вариант.