Multithreading ist das Konzept, mehrere Ausführungen innerhalb eines einzelnen Programms auszuführen. Es ist eine sehr nützliche Funktion in Programmiersprachen wie C ++, da wir es uns ermöglichen, mehrere Operationen gleichzeitig auszuführen. In c++, Multithreading kann über die erreicht werden Bibliothek, die eine Reihe von Klassen und Funktionen bereitstellt, mit denen Entwickler mehrere Threads erstellen, verwalten und steuern können.
Multithreading ist genau wie Multitasking. Es bedeutet, dass zwei oder mehr Themen gleichzeitig ausgeführt werden. In einem solchen Programm wird jede Komponente als Thread bezeichnet, und jeder Thread gibt einen einzigartigen Ausführungsweg an. Es gibt keine eingebaute Unterstützung für Multithread Programme vor C ++ 11. Diese Funktion wird stattdessen vollständig vom Betriebssystem bereitgestellt.
Multithreading kann auch als Aufteilung eines Programms in kleinere Threads bezeichnet werden, die gleichzeitig ausgeführt werden. Die Thread -Klasse, die für verwendet wird Multithreading Ermöglicht es Ihnen, in C ++ zahlreiche Threads zu erstellen und ihre Ausführung zu verwalten.
Erstellen Sie Themen in C++
Um einen Thread in C ++ zu erstellen, verwenden wir die std :: thread Klasse, die in der integrierten Thread-Bibliothek enthalten ist. A abrufbar wird dem Konstruktor eines Objekts der Klasse als Argument geliefert std :: thread Um einen neuen Thread zu generieren. Code, der ausgeführt wird, wenn ein Thread aktiv ist abrufbar. Wenn wir a konstruieren std :: thread Objekt, ein neuer Thread wird festgelegt, wodurch der Code von geliefert wird abrufbar laufen. Abrufbar kann mit diesen drei Methoden definiert werden.
Methode 1: Funktionszeiger
Abrufbar Funktionen mit einem Funktionszeiger können so definiert werden.
void Function_call (Parameter)
Wenn die Funktion konstruiert wurde, wird ein Thread -Objekt, das die Funktion enthält, wie folgt erzeugt:
std :: thread thread_obj (function_call, Parameter);
Methode 2: Funktionsobjekt
Während der Verwendung des Funktionsobjekts nutzen wir die Idee der Überlastung des Bedieners Vorteil. Der Code, der während der Bildung des Threads ausgeführt werden muss, ist in der überladenen Funktion enthalten.
Klasse Object_class
void operator () (Parameter)
// Code, die ausgeführt werden soll
;
STD :: Thread_Object (Object_class (), Parameter)
Methode 3: Lambda -Ausdruck
Abrufbar Funktionen mit einem Lambda -Ausdruck können so definiert werden.
Auto f = [] (Parameter)
// Code, die ausgeführt werden soll
;
STD :: Thread_Object (f, Parameter);
Beispiel für Multithreading in c++
#enthalten
#enthalten
Verwenden von Namespace STD;
void func_thread (int n)
für (int i = 0; i < N; i++)
Cout << "Thread 1 :: callable => Verwenden eines Funktionszeigers \ n ";
Klasse Thread_OBJ
öffentlich:
void operator () (int n)
für (int i = 0; i < n; i++)
Cout << "Thread 2 :: callable => Unter Verwendung eines Funktionsobjekts \ n ";
;
int main ()
Auto f = [] (int n)
für (int i = 0; i < n; i++)
Cout << "Thread 3 :: callable => Unter Verwendung eines Lambda -Ausdrucks \ n ";
;
Thread Th1 (func_thread, 2);
Thread Th2 (Thread_OBJ (), 2);
Thread Th3 (f, 2);
Th1.verbinden();
Th2.verbinden();
Th3.verbinden();
Rückkehr 0;
Im obigen Code haben wir drei Threads mit drei getrennten entwickelt Hallables-Ein Funktionszeiger, ein Objekt und ein Lambda -Ausdruck. Jeder Thread wird als zwei separate Instanzen gestartet. Drei Threads sind gleichzeitig und getrennt aktiv, wie im Ausgang angegeben.
Ausgang
Vor- und Nachteile des Multithreading
Weitere Arbeiten können dank dessen schneller erledigt werden Multithreading. Dies liegt daran, dass zahlreiche Fäden verschiedene Aufgaben gleichzeitig ausführen können. Multithreading Ermöglicht Programmierern, Netzwerkaktivitäten durchzuführen, Fotos oder Videos zu verarbeiten und komplizierte Berechnungen durchzuführen, ohne den Rest der Anwendung zu verlangsamen. Multithreading Hilft dabei, Benutzeroberflächen reaktionsschneller zu machen. Durch Ausführen des Codes, der den Bildschirm in einem separaten Thread ändert. Dies führt zu glatteren und schnelleren Benutzeroberflächen.
Es gibt jedoch einige Einschränkungen bei der Verwendung Multithreading. Eine der wichtigsten Herausforderungen bei der Arbeit mit Multithread Programme vermeiden Rennbedingungen. Eine Rennbedingung ist eine Situation, in der zwei oder mehr Fäden gleichzeitig versuchen, auf die gleiche gemeinsame Ressource zuzugreifen, was zu unvorhersehbarem Verhalten führt. Um Rassenbedingungen zu vermeiden, verwenden Entwickler Synchronisationstechniken wie Mutexes, Semaphoren und Barrieren.
Abschluss
Multithreading In C ++ ist ein leistungsstarkes Konzept, mit dem Entwickler Programme erstellen können, mit denen mehrere Aufgaben gleichzeitig ausgeführt werden können. Durch die Verwendung der von der Bibliothek bereitgestellten Thread -Klasse können Entwickler mehrere Threads erstellen, verwalten und steuern. Multithreading Kann verwendet werden, um die Leistung zu verbessern, die Reaktionsfähigkeit zu erhöhen und Systemressourcenbeschränkungen zu überwinden. Aufgrund der Herausforderungen bei der Arbeit mit der Arbeit mit Multithread Programme, Entwickler müssen vorsichtig sein und geeignete Synchronisationstechniken anwenden, um Rennbedingungen zu vermeiden.