Has any one ever written a multi-threaded C++ application for MicroBlaze? The Xilinx documentation states that:
The standard C library provided with EDK is not built for a multi-threaded environment. STDIO functions like printf(), scanf() and memory management functions like malloc() and
free() are common examples of functions that are not thread-safe. When using the C library
in a multi-threaded environment, proper mutual exclusion techniques must be used to protect
thread unsafe functions.
Additionally, MicroBlaze GCC reports that the thread model is “single.”
If I’m using C++ standard library containers, this is surely unsafe, correct?
I’m having a heck of time even getting an answer to this simple question from Xilinx, let alone a way to fix it. It seems that this is a major deficiency of the Xilinx provided build system.
The answer from Xilinx (via email) is below. It makes no mention of multi-threading. It also references a their software tool 8.2i which was released in 2006 (6 years ago!!!). In short, it makes no sense.
Lessons learned:
This information also appears to be available at: http://www.xilinx.com/support/answers/23345.html