2012-04-13 7 views
2

Ich habe eine Klasse main.cpp, sowie MyClass.cpp.Wie mache ich einen grundlegenden Thread in C++

In main.cpp, habe ich eine Menge Code. An der Spitze jedoch, erstelle ich ein MyClass Objekt und dann möchte ich einen Thread starten, der in MyClass ist. Ich möchte, dass es eine Funktion Run() aufruft und die Funktion gleichzeitig ausgeführt wird, damit die restlichen Funktionen in main.cpp laufen.

Was ist der einfachste Weg, dies in C++ zu tun. Ich habe noch nie Threading in C++ gemacht, aber ich habe es in Java getan.

würde Ich mag mit externen Paketen zu vermeiden und so, wenn möglich.

+5

Sie eine Version von C++ verwenden, die native Multi-Threading enthält? Wenn nicht, auf welche Plattform zielen Sie? (Mein starker Ratschlag wäre, [Boost] (http://boost.org) zu verwenden. Ja, es ist ein externes Paket, aber es ist tragbar, gut gemacht und führt zu besserem Code.) –

Antwort

1

Verwendung von Standard-C++:

#include <future> 

int main() { 
    MyClass mc; 
    auto future = std::async(MyClass::Run,&mc); 
    ... 
} 
2

Die C++ Sprache selbst hat keine Ahnung von Threads *. Sie können sicherlich Multithread-Programme in C++ schreiben, aber es wird eine plattformspezifische Thread-Bibliothek benötigt. Zum Beispiel können Sie die "Pthreads" -Bibliothek auf Linux-Systemen verwenden. Was ist Ihre Zielplattform?

* Die in der neuen C++ 11-Spezifikation hinzugefügten Erweiterungen fügen standardisierte Unterstützung für Threads hinzu, aber viele Compiler und Standardbibliotheken implementieren diese Version des Standards noch nicht.

4

Der einfachste Weg für Sie zu gehen ist boost thread Bibliothek zu verwenden.

#include <boost/thread.hpp> 
#include <boost/bind.hpp> 

... 

int main() 
{ 
    ... 
    MyClass mc; 
    boost::thread bt(boost::bind(MyClass::Run, &mc)); 
    ... 
    bt.join(); 
    ... 
} 
Verwandte Themen