C Programmeren

Posix Mutex met C-programmering

Posix Mutex met C-programmering
Het artikel van vandaag zal gericht zijn op het gebruik van Posix Mutex met C-programmering in Linux Mint 20. Voordat we echter verder gaan met ons belangrijkste voorbeeld, willen we eerst een paar terminologieën opruimen, zodat u het voorbeeldscenario dat we met u zullen delen gemakkelijk kunt begrijpen. In besturingssystemen wordt het concept van threading veel gebruikt. Threads zijn in feite subprocessen die zijn gedelegeerd met verschillende taken. U kunt het volgende voorbeeld bekijken om de werking van threads te begrijpen:.

Stel dat er een hoofddraad A is, wiens taak het is om de som van de variabelen w en y te berekenen waarbij w=x+1, en y=z+2. De waarden van de variabelen x en z moeten door de gebruiker worden opgehaald. In dit scenario kunnen we twee threads maken, B en C. De taak van thread B is om de waarde van de variabele x van de gebruiker te nemen, deze met 1 te verhogen en deze op te slaan in de variabele w. De taak van thread C is om de waarde van de variabele z van de gebruiker te nemen, deze met 2 te verhogen en deze vervolgens op te slaan in variabele y. Ten slotte zullen beide threads deze resultaten overdragen aan de hoofdthread A, die vervolgens hun som zal berekenen en het uiteindelijke resultaat zal weergeven.

Als we in dit scenario geen threads zouden hebben gemaakt, zouden alle taken in een veel grotere tijd door de hoofdthread A zijn uitgevoerd. Op deze manier kunnen threads uw berekeningen efficiënt uitvoeren zonder onnodige vertragingen. Er is echter een zeer grote zorg met het gebruik van threads, die bekend staat als de "race-conditie". Het is een situatie waarin twee threads dezelfde gegevens proberen te openen en wijzigen, waardoor het inconsistent blijft. Als programmeur zou ons doel moeten zijn om race-omstandigheden op de meest gracieuze manier te vermijden.

De meest gebruikte oplossing om raceomstandigheden te vermijden, is het gebruik van Mutex. Mutex staat voor wederzijdse uitsluiting en biedt ons in feite een vergrendelingsmechanisme dat de toegang tot en wijziging van de kritieke gegevens door meer dan één gebruiker tegelijk verhindert. Op deze manier wordt de consistentie van de gegevens gegarandeerd. Posix is ​​in feite een bibliotheek die ons verschillende ingebouwde functies biedt die de implementatie van threads en Mutex veel gemakkelijker maken. Met het volgende voorbeeld zullen we proberen het gebruik van Posix Mutex te leren met C-programmering in Linux Mint 20.

Voorbeeld van het gebruik van Posix Mutex met C-programmering in Linux Mint 20

We zullen de volgende drie stappen uitvoeren om u door het gebruik van Posix Mutex met C-programmering in Linux Mint 20 te leiden.

Stap 1: Een programma maken dat het gebruik van Posix Mutex met C-programmering in Linux Mint 20 demonstreert

Allereerst maken we een .cpp-bestand op ons Linux Mint 20-systeem. We gaan gewoon naar onze thuismap, maken een leeg document en noemen het Mutex.cpp. eens onze .cpp-bestand is gemaakt, openen we het met de teksteditor. Daarna zullen we de code die in de onderstaande afbeeldingen wordt weergegeven in onze .cpp-bestand:

De code die in de twee afbeeldingen hierboven wordt getoond, heeft twee verschillende threads gemaakt. De eerste thread komt overeen met Job #1, terwijl de tweede thread overeenkomt met Job #2. Vervolgens hebben we een voorbeeldfunctie gemaakt met de naam "Mutex-functie". In deze functie vergrendelen we eerst de Mutex-vergrendelingsvariabele en deze wordt pas ontgrendeld zodra thread #1 Job #1 heeft voltooid. Op dezelfde manier wordt de Mutex lock-variabele opnieuw vergrendeld door thread #2 totdat Job #2 is voltooid. Deze "Mutex-functie" wordt aangeroepen door de "hoofd" -functie.

Stap 2: Het C-programma compileren in Linux Mint 20

Na het opslaan van de .cpp-bestand, zullen we het nu compileren via de Linux Mint 20-terminal met de volgende opdracht:

$ gcc -o Mutex Mutex.cpp -pthread

Hier verwijst "Mutex", na de "-o" vlag, naar de naam van het objectbestand dat zal worden aangemaakt, terwijl "Mutex.cpp” is de naam van het origineel .cpp-bestand. De vlag "-pthread" is nodig om dit programma te compileren, omdat dit programma is geschreven terwijl de bibliotheek "pthread" wordt gebruikt. Als u deze vlag weglaat, wordt uw programma niet gecompileerd en worden enkele fouten weergegeven. De succesvolle compilatie van onze .cpp-bestand produceert geen berichten op de terminal, zoals weergegeven in de onderstaande afbeelding:

Stap 3: Het C-programma uitvoeren in Linux Mint 20

Nadat het objectbestand met de naam "Mutex" is gemaakt, kunnen we het uitvoeren met de volgende opdracht:

$ ./Mutex

In de output van onze Mutex.cpp-programma, zult u merken dat de eerste taak 1 is gestart, wat betekent dat thread #1 de Mutex-vergrendeling heeft gekregen. Daarna is taak 1 na enige tijd voltooid. Dan start Job 2, wat betekent dat thread #2 de Mutex lock heeft gekregen. Het wordt pas ontgrendeld als Job 2 is voltooid.

Conclusie

Dit artikel gaf een diepgaande uitleg van het gebruik van Posix Mutex met C-programmering in Linux Mint 20. De Mutex kan zeer effectief worden gebruikt om de race-omstandigheden tijdens het programmeren te vermijden door simpelweg de Posix- of pthread-bibliotheek in onze C-code op te nemen. Dit zorgt niet alleen voor consistentie van de gegevens, maar maakt de verwerking ook veel efficiënter.

Het beste van het gebruik van de Posix-bibliotheek in Linux is dat we er zelfs geen gespecialiseerde software, pakketten of compiler voor hoeven te installeren. De C-code kan eenvoudig in elke standaard teksteditor op Linux worden geschreven en kan worden gecompileerd en uitgevoerd met de standaard gcc- of g++-compilers. Dit blijkt een extra laag van gemak en gemak te zijn bij het gebruik van Posix Mutex met C-programmering in Linux Mint 20.

Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...
Emuleer muisklikken door te zweven met Clickless Mouse in Windows 10
Het gebruik van een muis of toetsenbord in de verkeerde houding of overmatig gebruik kan leiden tot veel gezondheidsproblemen, waaronder spanning, car...
Voeg muisbewegingen toe aan Windows 10 met deze gratis tools
In de afgelopen jaren zijn computers en besturingssystemen sterk geëvolueerd. Er was een tijd dat gebruikers opdrachten moesten gebruiken om door best...