首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在freeRTOS上使用std::thread?

如何在freeRTOS上使用std::thread?
EN

Stack Overflow用户
提问于 2020-10-23 04:56:43
回答 3查看 484关注 0票数 0

我在带有keil ide和arm编译器版本6和g++17的stm32f407上使用freeRTOS,我不喜欢使用freeRTOS线程API。相反,我希望使用std::thread c++本机库。但是当我包含#include <thread>时,keil抛出这个错误:error: <thread> is not supported on this single threaded system

有什么问题吗?

当我使用freeRTOS时,这意味着我的平台不是单线程的,那么为什么keil抛出这个错误呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-10 02:44:05

Keil抛出这个错误是因为您正在将应用程序链接到一个不支持API的库。

有一个freeRTOS POSIX threading wrapper可以评估使用,或者可以在CMSIS OS API之上创建另一个抽象层。

还有一个C++包装器项目freeRTOS-addons,它提供了一组方便的类/API,但它已经停用了很多年。

在使用包装器之前,如果RTOS的确定性和任务优先级机制不会被用作同等优先级的任务将共享CPU时间,那么必须评估为什么要使用RTOS。当然,还有其他好处。

票数 1
EN

Stack Overflow用户

发布于 2020-10-23 05:27:22

这并不是关于C++17本身,而是关于编译器/STL特性对FreeRTOS平台的支持。你知道,为了提供兼容的std::thread接口,必须有人为某个操作系统平台实现血淋淋的、低层次的细节。这同样适用于std::mutex和其他需要操作系统支持的相关特性。因此,您必须要求您的(交叉)编译器提供商构建一个支持FreeRTOS的std::thread。

票数 1
EN

Stack Overflow用户

发布于 2021-05-09 21:21:52

我们中的许多人只是为FreeRTOS API使用自己的C++包装器,或者将FreeRTOS调用合并到类中,在这些类中,它们对大多数应用程序都是隐藏的。您可能想看看这个,它基本上完成了您想要的功能:https://www.codeproject.com/Articles/1278513/Cplusplus11-FreeRTOS-GCC

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64490447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档