C Programmering

Posix Mutex med C-programmering

Posix Mutex med C-programmering
Dagens artikel vil fokusere på brugen af ​​Posix Mutex med C-programmering i Linux Mint 20. Inden vi går videre til vores hovedeksempel, vil vi dog først rydde et par terminologier, så du let kan forstå eksempletscenariet, som vi deler med dig. I operativsystemer bruges begrebet trådning i udstrakt grad. Tråde er grundlæggende delprocesser, der delegeres med forskellige opgaver. Du kan overveje følgende eksempel for at forstå, hvordan trådene fungerer.

Antag at der er en hovedtråd A, hvis opgave er at beregne summen af ​​variablerne w og y hvor w = x + 1 og y = z + 2. Værdierne for variablerne x og z skal hentes af brugeren. I dette scenarie kan vi oprette to tråde, B og C. Tråden B's opgave er at tage værdien af ​​variablen x fra brugeren, øge den med 1 og gemme den i variablen w. Tråden C's opgave er at tage værdien af ​​variablen z fra brugeren, øge den med 2 og derefter gemme den i variabel y. Endelig overfører begge disse tråde disse resultater til hovedtråden A, som derefter beregner deres sum og viser det endelige resultat.

Hvis vi ikke ville have oprettet nogen tråde i dette scenarie, ville alle opgaverne være udført af hovedtråden A i meget større tid. På denne måde kan tråde effektivt udføre dine beregninger uden unødvendige forsinkelser. Der er dog en meget stor bekymring med brugen af ​​tråde, der er kendt som "race-tilstand". Det er en situation, hvor to tråde forsøger at få adgang til og ændre de samme data og dermed lade dem være inkonsekvente. Som programmør skal vores mål være at undgå race-forhold på den mest yndefulde måde.

Den mest anvendte løsning til at undgå race betingelser er brugen af ​​Mutex. Mutex står for gensidig udelukkelse, og det giver os grundlæggende en låsemekanisme, der forhindrer adgang og ændring af kritiske data af mere end en bruger ad gangen. På denne måde sikres datakonsistens. Posix er dybest set et bibliotek, der præsenterer os for forskellige indbyggede funktioner, der gør implementeringen af ​​tråde og Mutex meget lettere. Med det følgende eksempel vil vi prøve at lære brugen af ​​Posix Mutex med C-programmering i Linux Mint 20.

Eksempel på brug af Posix Mutex med C-programmering i Linux Mint 20

Vi udfører de følgende tre trin for at gennemgå brugen af ​​Posix Mutex med C-programmering i Linux Mint 20.

Trin # 1: Oprettelse af et program, der demonstrerer brugen af ​​Posix Mutex med C-programmering i Linux Mint 20

Først og fremmest opretter vi en .cpp-fil på vores Linux Mint 20-system. Vi går simpelthen til vores hjemmemappe, opretter et tomt dokument og navngiver det Mutex.cpp. En gang vores .cpp-fil oprettes, åbner vi den med teksteditoren. Derefter skriver vi koden vist i nedenstående billeder til vores .cpp-fil:

Koden vist i de to billeder ovenfor skabte to forskellige tråde. Den første tråd svarer til Job # 1, mens den anden tråd svarer til Job # 2. Så har vi oprettet en prøvefunktion ved navn "Mutex-funktion". I denne funktion låser vi først Mutex-låsevariablen, og den låses kun op, når tråd nr. 1 er færdig med job nr. 1. På samme måde vil Mutex-låsevariablen igen blive låst af tråd nr. 2, indtil den er færdig med job nr. 2. Denne “Mutex-funktion” kaldes “hoved” -funktionen.

Trin # 2: Kompilering af C-programmet i Linux Mint 20

Efter at have gemt .cpp-fil, vi kompilerer den nu gennem Linux Mint 20-terminalen med følgende kommando:

$ gcc -o Mutex Mutex.cpp-tråd

Her henviser "Mutex" efter "-o" -flaget til navnet på den objektfil, der oprettes, mens "Mutex.cpp ”er navnet på originalen .cpp-fil. Flagget "-pthread" er nødvendigt for at kompilere dette program, fordi dette program er skrevet, mens du bruger "pthread" -biblioteket. Hvis du udelader dette flag, kompileres dit program ikke og gengiver nogle fejl. Den vellykkede samling af vores .cpp-fil producerer ikke nogen meddelelser på terminalen, som vist på billedet nedenfor:

Trin # 3: Kørsel af C-programmet i Linux Mint 20

Når objektfilen med navnet “Mutex” er oprettet, kan vi køre den ved hjælp af følgende kommando:

$ ./ Mutex

I output fra vores Mutex.cpp-program, vil du bemærke, at første job 1 er startet, hvilket betyder, at tråd nr. 1 har erhvervet Mutex-låsen. Derefter slutter Job 1 efter et stykke tid. Derefter starter Job 2, hvilket betyder, at tråd nr. 2 har erhvervet Mutex-låsen. Det låses først op, når Job 2 er færdig.

Konklusion

Denne artikel gav en grundig forklaring på brugen af ​​Posix Mutex med C-programmering i Linux Mint 20. Mutex kan bruges meget effektivt for at undgå løbetilstanden under programmering ved blot at medtage Posix- eller pthread-biblioteket i vores C-kode. Dette vil ikke kun sikre datakonsistens, men også gøre behandlingen meget mere effektiv.

Det bedste ved at bruge Posix-biblioteket i Linux er, at vi ikke engang behøver at installere nogen speciel software, pakker eller kompilator til det. C-koden kan simpelthen skrives i enhver standardteksteditor på Linux og kan kompileres og køres med standard gcc- eller g ++ -compilere. Dette viser sig at være et ekstra lag af lethed og bekvemmelighed i brugen af ​​Posix Mutex med C-programmering i Linux Mint 20.

Shadow of the Tomb Raider til Linux-vejledning
Shadow of the Tomb Raider er den tolvte tilføjelse til Tomb Raider-serien - en action-adventure-spilfranchise oprettet af Eidos Montreal. Spillet blev...
Sådan styrkes FPS i Linux?
FPS står for Billeder i sekundet. FPS's opgave er at måle billedhastigheden i videoafspilninger eller spiloptræden. I enkle ord betegnes antallet af u...
Top Oculus App Lab-spil
Hvis du er Oculus-headset-ejer, skal du være opmærksom på sideloading. Sideladning er processen med at installere ikke-butiksindhold på dit headset. S...