multithreading c with examples
Eine kurze Einführung in Multithreading in C ++.
In diesem Tutorial erhalten wir einen Überblick über Multithreading in C ++.
Was ist ein Thread? Ein Thread ist eine Arbeitseinheit eines bestimmten Prozesses. In Betriebssystemen mit mehreren Programmierungen werden verschiedene Prozesse gleichzeitig ausgeführt.
In ähnlicher Weise möchten wir möglicherweise dieselben Prozessinstanzen gleichzeitig ausführen. In diesem Fall wird jede Prozessinstanz einer Ausführungseinheit namens Thread zugewiesen. In einem Multithreading-System werden zahlreiche Threads gleichzeitig unabhängig voneinander ausgeführt.
=> Schauen Sie sich hier das C ++ Anfängerhandbuch an.
c ++ Zufallszahl zwischen 1 und 3
Vor C ++ 11 hatten wir POSIX-Thread-Unterstützung. Diese Funktion hatte jedoch schwerwiegende Portabilitätsprobleme, da sie nur unter Linux oder UNIX funktionierte. Ab C ++ 11 haben wir also eine einzige Klasse std :: thread Hiermit werden alle Funktionen für Threads definiert. Die Klassen und Funktionen sind in der Header-Datei definiert.
Was du lernen wirst:
Arbeiten von
Mit std :: thread müssen wir lediglich ein neues Thread-Objekt erstellen und es als aufrufbar übergeben. Ein aufrufbarer Code ist ein ausführbarer Code, den wir ausführen möchten, wenn der Thread ausgeführt wird. Wenn wir also einen neuen Thread wollen, erstellen wir einfach ein Objekt von std :: thread und übergeben einen aufrufbaren als Argument an seinen Konstruktor.
Sobald das std :: thread-Objekt erstellt wurde, wird ein neuer Thread gestartet und der von callable bereitgestellte Code ausgeführt.
Lassen Sie uns sehen, wie wir einen Aufruf definieren können, der für das Thread-Objekt bereitgestellt werden soll.
Ein Callable kann auf drei Arten definiert werden.
# 1) Verwenden des Funktionsobjekts
Wir können ein Funktionsobjekt als aufrufbares Objekt im Thread-Objekt verwenden. Für die Verwendung des Funktionsobjekts benötigen wir eine Klasse und in dieser Klasse überladen wir den Operator (). Diese überladene Funktion enthält den Code, der beim Erstellen des Threads ausgeführt werden soll.
Orakel SQL Interview Fragen für erfahrene
/ / Define the class for function object class functioObject_class { // Overload () operator void operator()(params) { // code to be executed } }; // Create thread object
std::thread thread_object(functioObject_class (), params)
Beachten Sie die Art und Weise, wie das Thread-Objekt definiert ist. Als ersten Parameter für den Konstruktor des Thread-Objekts stellen wir die überladene Funktion bereit und geben dann ihre Argumente (Parameter) als zweites Argument an.
# 2) Verwenden des Funktionszeigers
Ein aufrufbarer Funktionszeiger kann folgendermaßen definiert werden.
void funct_call(params) //code to be executed }
Sobald wir diese Funktion definiert haben, können wir auf folgende Weise ein Thread-Objekt mit dieser Funktion als aufrufbar erstellen.
std::thread thread_obj(funct_call, params);
Beachten Sie, dass die an die Funktion übergebenen Argumente (Parameter) nach dem Funktionsnamen im Thread-Objekt angegeben werden.
# 3) Verwenden eines Lambda-Ausdrucks
Wir können auch einen aufrufbaren Lambda-Ausdruck haben und ihn zur Ausführung an das Thread-Objekt übergeben. Das Code-Snippet dafür ist unten dargestellt.
// Define a lambda expression auto f = ()(params) { // code for execution };
std::thread thread_object(f, params);
Im obigen Code haben wir einen Lambda-Ausdruck f definiert und übergeben ihn dann als erstes Argument an den Thread-Objektkonstruktor, gefolgt von seinen Parametern (params) als zweitem Argument.
std::thread join method
In einigen Fällen möchten wir möglicherweise, dass der aktuell ausgeführte Thread beendet wird, bevor wir eine weitere Aktion starten.
Ein klassisches Beispiel ist das Öffnen der GUI-Anwendung. Sobald wir die Anwendung öffnen, wird ein Thread zum Laden und Initialisieren der GUI gestartet, und wir können keine Aktion ausführen, es sei denn, das Laden und Initialisieren erfolgt ordnungsgemäß, um sicherzustellen, dass die GUI ordnungsgemäß funktioniert.
Die Klasse std :: thread bietet eine join () -Methode, die sicherstellt, dass der aktuelle Thread (auf den * this zeigt) zuerst beendet wird, bevor eine andere Aktion ausgeführt wird.
Nehmen Sie das folgende Beispiel,
int main() { std::thread t1(callable_code); ….. t1.join(); ….. }
Im obigen Beispiel muss die Hauptfunktion warten, bis der Thread t1 beendet ist. Im Allgemeinen blockiert die Join-Funktion des Threads andere Aktionen / Funktionen, bis der Thread-Aufruf seine Ausführung beendet.
Beispiel eines Threads
Wir präsentieren ein vollständiges Codierungsbeispiel für die Erstellung und Ausführung des Threads in dem unten gezeigten Programm.
wie man sort in java benutzt
#include #include using namespace std; // function to be used in callable void func_dummy(int N) { for (int i = 0; i Ausgabe:
Thread 1 :: callable => Funktionszeiger
Thread 1 :: callable => Funktionszeiger
Thread 3 :: callable => Lambda-Ausdruck
Thread 3 :: callable => Lambda-Ausdruck
Thread 2 :: callable => Funktionsobjekt
Thread 2 :: callable => Funktionsobjekt
Im obigen Beispiel haben wir drei Threads unter Verwendung von drei verschiedenen aufrufbaren, d. H. Funktionszeiger-, Objekt- und Lambda-Ausdrücken erstellt. Wir erstellen 2 Instanzen jedes Threads und starten sie. Wie in der Ausgabe gezeigt, arbeiten drei Threads gleichzeitig unabhängig voneinander.
Empfohlene Lektüre = >> Gewindetesthandbuch
Fazit
In diesem Tutorial haben wir die Multithreading-Konzepte in C ++ anhand eines klaren Beispiels gesehen. In unseren nachfolgenden Tutorials erfahren Sie mehr über C ++ - Themen, mit denen wir robuste und effiziente Programme schreiben können.
=> Lesen Sie die Easy C ++ - Schulungsserie durch.
Literatur-Empfehlungen
- Python-Hauptfunktions-Tutorial mit praktischen Beispielen
- Python DateTime Tutorial mit Beispielen
- Befehl in Unix mit Beispielen ausschneiden
- Unix Cat-Befehlssyntax, Optionen mit Beispielen
- Verwendung des Cursors in MongoDB mit Beispielen
- Ls-Befehl unter Unix mit Beispielen
- MongoDB Sort () -Methode mit Beispielen
- Grep-Befehl unter Unix mit einfachen Beispielen