Multi-threaded Mex functions in the FEX
Mostrar comentarios más antiguos
I've published some C-Mex functions in the FEX, which could benefit from multi-threading. I like to keep the function compatible with Windows, Linux and MacOS.
While I have some experiences with using _beginthreadex and _endthreadex under Windows, I have not worked with the pthread libraries under Linux. Although I can use pthread under Windows also, I do not want to increase the requirements for the users any further - even the compilation with the "mex" command is too confusing for some users already.
OpenMP is not available in the free MSVC Express compilers. And installing MinGW to compile the Mex files is not trivial also.
What are simple solutions for a platform independent multi-threading in C- or C++-Mex-functions?
2 comentarios
Jan
el 22 de Dic. de 2011
Yair Altman
el 6 de Mzo. de 2014
I believe that using winpthreads-32 (which works on Win64 as well as Win32, despite the name) is easier than MinGW. See my latest article on UndocumentedMatlab.com. Since Pthreads are natively supported on Macs & Linux, this could be the winning combination.
Respuesta aceptada
Más respuestas (2)
Peter Li
el 3 de Jul. de 2012
2 votos
With C++11 your general problem should be solved? Search stackoverflow (or perhaps Matlab answers) for how to compile mex with C++11.
Even if you get C++11 working, C++ multithreading is not much fun, so I recommend instead using the Theron Actors library. It's nice to do multithreading under the Actors model and this library is pretty efficient and very well documented. And it allows you to flexibly link in different threading solutions.
The only problem with this is that if you use boost-thread for the threading under Linux the linking step will conflict with the boost-thread Matlab uses internally, so that will require more struggling with mex to get working.
1 comentario
Jan
el 3 de Jul. de 2012
Categorías
Más información sobre Call C++ from MATLAB en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!