已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
4天前关闭。
Improve this question
是否可以在AVR µC上使用C++20协程?我目前正在做一个业余嵌入式项目,能够使用适当的协程将非常好。我知道它们有动态内存需求,但我不认为这是一个问题。
在最坏的情况下,我可以自己实现所有的东西,除了std::coroutine_handle
。我认为这个需要编译器支持(至少在快速浏览MSVC的实现之后)。
那么,是否有std::coroutine_handle
的工作版本可用于AVR目标(以及其他需要特殊编译器支持的目标)?
1条答案
按热度按时间kg7wmglp1#
理论上它应该“正常工作”。至少在gcc编译器中是这样的?C++标准说协程是在堆上动态分配的(即它在每个任务〈〉上调用new),所以你必须小心每个任务〈〉的内存使用。
甚至有一篇关于它的论文在这里发表,看起来很有希望。
这不像异常,你必须通过一堆倒带表,每个任务〈〉都分配在自己的小盒子里。
理论上,如果任务的生命周期在调用者中,编译器应该在调用者中分配任务,但以防万一,你应该重写“struct Coroutine::promise_type”新操作符来调试它。不确定GCC是否把它放进去了,因为我找不到合适的pull。