OpenMP ist ein höheres Niveau Threading-Bibliothek als # Fäden C und oft fast automatisch einige Threading Serienanwendungen verwendet wird, hinzufügen. Mit der Anweisung , mit der der Code innerhalb des Anweisungsblocks in mehreren Threads automatisch ausgeführt wird, können Sie möglicherweise etwas Ähnliches erreichen. Sie könnten dann die Funktion in diesem parallelen Abschnitt aufrufen.
Die Stärke von OpenMP ist, dass es einfach ist, Threading mit wenigen Direktiven zum bestehenden Code hinzuzufügen. Ich habe es jedoch einfacher gefunden, eine Threading-Bibliothek auf niedrigerer Ebene zu verwenden, wenn ich etwas Kompliziertes (oder einfach so) machen möchte.
Wenn Sie etwas mit einer ähnlichen Schnittstelle zu C# -Threads möchten, werfen Sie einen Blick auf die Boost.Thread-Bibliothek. Damit können Sie in fast derselben Syntax tun, was Sie wollen:
#include <boost/thread.hpp>
//creates the thread object and starts the thread, returns immediately
boost::thread th(func1);
//...
//do something else
//...
Wie ich es verstehe, besteht der ganze Sinn von openMP darin, dass der Compiler den Code erzeugt, um mehrere Threads für Sie zu erzeugen. – Dima
Was passiert, wenn ich einen Thread starten muss und nicht auf das Ende warten muss? – Betamoo
Ich denke nicht, dass OpenMP das ist, wonach Sie suchen. Jede Standard-Threading-Bibliothek kann das tun, was Sie tun. OpenMP dient zum automatischen Parallelisieren von Codeabschnitten, die parallelisiert werden können. – Jimmeh