【发布时间】:2012-11-05 23:20:12
【问题描述】:
有没有人为 MicroBlaze 编写过多线程 C++ 应用程序? Xilinx 文档指出:
EDK 提供的标准 C 库不是为多线程环境构建的。 STDIO 函数如 printf()、scanf() 和内存管理函数如 malloc() 和 free() 是非线程安全函数的常见示例。使用 C 库时 在多线程环境中,必须使用适当的互斥技术来保护 线程不安全函数。
此外,MicroBlaze GCC 报告线程模型是“单一的”。
如果我使用 C++ 标准库容器,这肯定是不安全的,对吗?
我什至可以从 Xilinx 获得这个简单问题的答案,更不用说解决它的方法了。这似乎是 Xilinx 提供的构建系统的一个主要缺陷。
【问题讨论】:
-
哇,这使得多线程 C++ 在平台上几乎无法使用。如果您制作了自己的线程安全内存分配器,将
new和delete连接到它,并确保代码在任何线程中运行,但除了您自己的代码之外,您可以使用额外的线程进行计算/处理目的。但基本上这使得多线程在平台上几乎无法使用。
标签: c++ stl malloc microblaze