我想用free-rtos为微控制器编写一个多线程程序。 但我不想使用非标准的 free-rtos 函数,相反,我想使用本机 c++ 库来运行并行和异步任务。 但我不知道如何编写一个适配器,用于将用于线程创建的 C++ 系统调用连接到 free-rtos 函数。
MCU: 手臂皮层 M4 STM32F407
C++ 版本:17
该标准定义了一个接口,它指定了语法,并可能定义了对其性能的一些要求,但它不会定义如何实现任务调度程序,这是编译器的职责。
实际上,这就是std::thread
经常使用的包装器,它使用来自操作系统(或较低层(的线程并依赖于它们。如果你有一个兼容C++11的编译器来包含std::thread
,显然你不必做任何事情。否则,你必须编写自己的抽象层或使用由其他人编码的包装器,互联网上有很多想法,即:https://www.codeproject.com/Articles/1278513/Cplusplus11-FreeRTOS-GCC
FreeRTOS 似乎有一个 POSIX 线程适配器层。 它是一个子集,但可能足以从GNUlibstdc++
或clanglibc++
中构建一个thread
、mutex
和future
。您几乎肯定需要一个有效的std::atomic
实现。
POSIX线程中有很多问题,这是由于它改装到各种类似UNIX的操作系统而产生的,而且您很可能不希望这些位不受支持。 出于充分的理由,它不是许多 RTOS 的默认线程 API。