C Programmering

Posix Mutex med C-programmering

Posix Mutex med C-programmering
Dagens artikel kommer att fokuseras på användningen av Posix Mutex med C-programmering i Linux Mint 20. Innan vi går vidare till vårt huvudsakliga exempel vill vi först rensa ut några terminologier, så att du lätt kan förstå exemplets scenario som vi kommer att dela med dig. I operativsystem används begreppet trådning i stor utsträckning. Trådar är i grunden delprocesser som delegeras med olika uppgifter. Du kan överväga följande exempel för att förstå hur trådarna fungerar.

Anta att det finns en huvudtråd A, vars uppgift är att beräkna summan av variablerna w och y där w = x + 1 och y = z + 2. Värdena för variablerna x och z ska hämtas av användaren. I det här scenariot kan vi skapa två trådar, B och C. Uppgiften för tråd B blir att ta värdet på variabeln x från användaren, öka den med 1 och spara den i variabeln w. Uppgiften för tråd C är att ta värdet på variabeln z från användaren, öka den med 2 och sedan spara den i variabel y. Slutligen kommer båda dessa trådar att överföra dessa resultat till huvudtråden A, som sedan beräknar deras summa och visar det slutliga resultatet.

Om vi ​​inte skulle ha skapat några trådar i det här scenariot, skulle alla uppgifter ha utförts av huvudtråden A på mycket längre tid. På detta sätt kan trådar effektivt utföra dina beräkningar utan onödiga förseningar. Det finns dock en mycket stor oro för användningen av trådar, som kallas "rasvillkoret". Det är en situation där två trådar försöker få åtkomst till och modifiera samma data och därmed lämna den inkonsekvent. Som programmerare bör vårt mål vara att undvika rasförhållanden på det mest graciösa sättet.

Den vanligaste lösningen för att undvika rasförhållanden är användningen av Mutex. Mutex står för ömsesidig uteslutning, och det ger oss i princip en låsmekanism som förhindrar åtkomst och modifiering av kritiska data av mer än en användare åt gången. På detta sätt säkerställs datakonsistens. Posix är i grunden ett bibliotek som presenterar oss för olika inbyggda funktioner som gör implementeringen av trådar och Mutex mycket enklare. Med följande exempel kommer vi att försöka lära oss användningen av Posix Mutex med C-programmering i Linux Mint 20.

Exempel på användning av Posix Mutex med C-programmering i Linux Mint 20

Vi kommer att utföra följande tre steg för att gå igenom användningen av Posix Mutex med C-programmering i Linux Mint 20.

Steg 1: Skapa ett program som visar användningen av Posix Mutex med C-programmering i Linux Mint 20

Först och främst kommer vi att skapa en .cpp-fil på vårt Linux Mint 20-system. Vi kommer helt enkelt att gå till vår hemmapp, skapa ett tomt dokument och namnge det Mutex.cpp. En gång vår .cpp-fil skapas, vi öppnar den med textredigeraren. Därefter skriver vi koden som visas i bilderna nedan till vår .cpp-fil:

Koden som visas i de två bilderna ovan skapade två olika trådar. Den första tråden motsvarar jobb nr 1, medan den andra tråden motsvarar jobb nr 2. Sedan har vi skapat en exempelfunktion som heter "Mutex-funktion". I den här funktionen låser vi först Mutex-låsvariabeln, och den låses bara upp när tråd nr 1 slutför jobb # 1. På samma sätt låses variabeln Mutex-lås igen av tråd nr 2 tills den avslutar jobb nr 2. Denna "Mutex-funktion" kallas av "huvud" -funktionen.

Steg 2: Kompilera C-programmet i Linux Mint 20

Efter att ha sparat .cpp-fil kommer vi nu att sammanställa den via Linux Mint 20-terminalen med följande kommando:

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

Här, "Mutex", efter "-o" -flaggan, hänvisar till namnet på objektfilen som kommer att skapas, medan "Mutex.cpp ”är namnet på originalet .cpp-fil. Flaggan "-pthread" är nödvändig för att kompilera detta program eftersom detta program skrivs medan du använder biblioteket "pthread". Om du utelämnar denna flagga kommer ditt program inte att kompileras och kommer att ge några fel. Den framgångsrika sammanställningen av vår .cpp-filen kommer inte att producera några meddelanden på terminalen, som visas i bilden nedan:

Steg 3: Köra C-programmet i Linux Mint 20

När objektfilen ”Mutex” har skapats kan vi köra den med följande kommando:

$ ./ Mutex

I produktionen av vår Mutex.cpp-program, kommer du att märka att första jobb 1 har startat, vilket innebär att tråd nr 1 har förvärvat Mutex-låset. Efter det avslutar Job 1 efter en tid. Sedan startar Job 2, vilket innebär att tråd nr 2 har förvärvat Mutex-låset. Den låses bara upp när Job 2 är klar.

Slutsats

Den här artikeln gav en fördjupad förklaring av användningen av Posix Mutex med C-programmering i Linux Mint 20. Mutex kan användas mycket effektivt för att undvika tävlingsförhållanden under programmering genom att helt enkelt inkludera Posix eller pthread-biblioteket i vår C-kod. Detta kommer inte bara att säkerställa datakonsistens utan kommer också att göra behandlingen mycket effektivare.

Det bästa med att använda Posix-biblioteket i Linux är att vi inte ens behöver installera någon specialiserad programvara, paket eller kompilator för det. C-koden kan enkelt skrivas i vilken standardtextredigerare som helst på Linux och kan kompileras och köras med standard gcc eller g ++ kompilatorer. Detta visar sig vara ett extra lager av enkelhet och bekvämlighet i användningen av Posix Mutex med C-programmering i Linux Mint 20.

Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...
5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...
Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...