multithreading c with examples
Een korte inleiding tot multithreading in C ++.
In deze tutorial krijgen we een overzicht van multithreading in C ++.
Dus wat is een draad? Een thread is een werkende eenheid van een bepaald proces. In besturingssystemen met meerdere programmering worden verschillende processen tegelijkertijd uitgevoerd.
Op een vergelijkbare manier willen we misschien dezelfde procesinstanties tegelijkertijd uitvoeren. Elke procesinstantie wordt in dit geval toegewezen aan een uitvoeringseenheid genaamd thread. In een multithreading-systeem worden meerdere threads tegelijkertijd onafhankelijk van elkaar uitgevoerd.
Bekijk hier de C ++ Beginnersgids.
youtube naar wav converter gratis download
Vóór C ++ 11 hadden we POSIX-threadondersteuning. Maar deze functie had ernstige draagbaarheidsproblemen, aangezien deze alleen werkte op het Linux- of UNIX-besturingssysteem. Dus vanaf C ++ 11 hebben we één klasse std :: thread die alle functionaliteit voor threads definieert. De klassen en functies worden gedefinieerd in het header-bestand.
Wat je leert:
Werken van
Door std :: thread te gebruiken, hoeven we alleen maar een nieuw thread-object te maken en het een oproepbaar door te geven. Een oproepbare is een uitvoerbare code die we willen uitvoeren wanneer de thread wordt uitgevoerd. Dus wanneer we een nieuwe thread willen, maken we gewoon een object van std :: thread en geven we een callable als argument door aan de constructor.
Zodra het std :: thread-object is gemaakt, wordt een nieuwe thread gestart en wordt de code die wordt geleverd door callable uitgevoerd.
Laten we eens kijken hoe we een oproepbare kunnen definiëren die aan het thread-object moet worden verstrekt.
Een oproepbaar kan op drie manieren worden gedefinieerd.
# 1) Het functieobject gebruiken
We kunnen een functieobject gebruiken als een oproepbaar in het thread-object. Om het functieobject te gebruiken, hebben we een klasse nodig en in die klasse overbelasten we de operator (). Deze overbelaste functie bevat de code die moet worden uitgevoerd wanneer de thread wordt gemaakt.
de beste gratis muziekdownloader-app voor Android
Let op de manier waarop het thread-object is gedefinieerd. Als de eerste parameter voor de constructor van thread-object, bieden we de overbelaste functie en specificeren we de argumenten (params) als het tweede argument.
# 2) Function Pointer gebruiken
Een oproepbare functie pointer kan op de volgende manier worden gedefinieerd.
Zodra we deze functie hebben gedefinieerd, kunnen we op de volgende manier een thread-object maken met deze functie als oproepbaar.
Merk op dat de argumenten (params) die aan de functie worden doorgegeven, worden gegeven na de functienaam in het thread-object.
# 3) Een Lambda-expressie gebruiken
We kunnen ook een callable hebben als lambda-uitdrukking en deze doorgeven aan het thread-object voor uitvoering. Het codefragment voor hetzelfde wordt hieronder weergegeven.
In de bovenstaande code hebben we een lambda-uitdrukking f gedefinieerd en we geven deze vervolgens door aan de thread-objectconstructor als het eerste argument, gevolgd door zijn parameters (params) als het tweede argument.
In sommige gevallen willen we misschien dat de thread die momenteel wordt uitgevoerd, is voltooid voordat we een andere actie starten.
Een klassiek voorbeeld is wanneer we de GUI-applicatie openen. Op het moment dat we de applicatie openen, wordt een thread gestart om de GUI te laden en te initialiseren en kunnen we geen actie ondernemen, tenzij het laden en initialiseren correct is uitgevoerd om ervoor te zorgen dat de GUI correct werkt.
De klasse std :: thread biedt een methode join () die ervoor zorgt dat de huidige thread (aangegeven met * dit) als eerste eindigt voordat er een andere actie wordt ondernomen.
Neem het volgende voorbeeld
java 8 nieuwe functies met voorbeelden
In het bovenstaande voorbeeld zal de hoofdfunctie moeten wachten om door te gaan totdat thread t1 is voltooid. In het algemeen blokkeert de join-functie van thread andere acties / functionaliteit totdat de thread-aanroep de uitvoering ervan voltooit.
Voorbeeld van draad
We presenteren een compleet coderingsvoorbeeld voor het maken en uitvoeren van de thread in het onderstaande programma.
Uitgang:
Thread 1 :: callable => functieaanwijzer
Thread 1 :: callable => functieaanwijzer
Thread 3 :: callable => lambda-uitdrukking
Thread 3 :: callable => lambda-uitdrukking
Thread 2 :: callable => functieobject
Thread 2 :: callable => functieobject
In het bovenstaande voorbeeld hebben we drie threads gemaakt met behulp van drie verschillende opvraagbare, d.w.z. functiepointer, object en lambda-expressie. We maken 2 exemplaren van elke thread en starten ze. Zoals te zien is in de uitvoer, werken drie threads tegelijkertijd onafhankelijk van elkaar.
Aanbevolen literatuur = >> Gids voor het testen van draad
Gevolgtrekking
In deze tutorial hebben we de multithreading-concepten in C ++ gezien met een duidelijk voorbeeld. In onze volgende tutorials zullen we meer C ++ -onderwerpen leren die ons kunnen helpen bij het schrijven van robuuste en efficiënte programma's.
Lees de Easy C ++ Training Series door.
Aanbevolen literatuur
- Python Main Function-zelfstudie met praktische voorbeelden
- Python DateTime-zelfstudie met voorbeelden
- Knip Commando in Unix met voorbeelden
- Unix Cat Command Syntax, opties met voorbeelden
- Gebruik van Cursor in MongoDB met voorbeelden
- Ls Command in Unix met voorbeelden
- MongoDB Sort () -methode met voorbeelden
- Grep-opdracht in Unix met eenvoudige voorbeelden