C Programiranje

Posix Mutex s C programiranjem

Posix Mutex s C programiranjem
Današnji će se članak fokusirati na upotrebu Posix Mutexa s C programiranjem u Linux Mint 20. Međutim, prije nego što krenemo na naš glavni primjer, prvo bismo željeli raščistiti nekoliko terminologija, tako da možete lako razumjeti primjer scenarija koji ćemo podijeliti s vama. U operativnim sustavima pojam navoja koristi se uvelike. Teme su u osnovi podprocesi koji se delegiraju s različitim zadacima. Da biste razumjeli rad niti, možete razmotriti sljedeći primjer.

Pretpostavimo da postoji glavna nit A, čiji je posao izračunati zbroj varijabli w i y gdje je w = x + 1 i y = z + 2. Vrijednosti varijabli x i z korisnik treba dohvatiti. U ovom scenariju možemo stvoriti dvije niti, B i C. Posao niti B bit će uzeti vrijednost varijable x od korisnika, povećati je za 1 i spremiti u varijablu w. Posao niti C bit će preuzeti vrijednost varijable z od korisnika, povećati je za 2, a zatim spremiti u varijablu y. Konačno, obje će niti predati ove rezultate glavnoj niti A, koja će tada izračunati njihov zbroj i prikazati konačni rezultat.

Da u ovom scenariju ne bismo stvorili niti, tada bi sve zadatke glavnu nit A izvodila u mnogo većem vremenu. Na taj način niti mogu učinkovito izvršiti vaše izračune bez nepotrebnih odgađanja. Međutim, postoji vrlo velika zabrinutost zbog upotrebe niti, koja je poznata kao "stanje utrke". To je situacija u kojoj dvije niti pokušavaju pristupiti i izmijeniti iste podatke, što ih ostavlja nedosljednima. Kao programeru, naš bi cilj trebao biti izbjegavanje uvjeta utrke na najgraciozniji način.

Rješenje koje se najčešće koristi za izbjegavanje uvjeta utrke je upotreba Mutexa. Mutex se zalaže za uzajamno isključivanje i u osnovi nam pruža mehanizam zaključavanja koji istovremeno sprečava pristup i izmjenu kritičnih podataka od više korisnika. Na taj se način osigurava dosljednost podataka. Posix je u osnovi knjižnica koja nam predstavlja različite ugrađene funkcije koje znatno olakšavaju implementaciju niti i Mutexa. Sljedećim ćemo primjerom pokušati naučiti upotrebu Posix Mutexa s C programiranjem u Linux Mint 20.

Primjer upotrebe Posix Mutexa s C programiranjem u Linux Mint 20

Izvest ćemo sljedeća tri koraka kako bismo vas proveli kroz upotrebu Posix Mutexa s C programiranjem u Linux Mint 20.

1. korak: Stvaranje programa koji demonstrira upotrebu Posix Mutexa s C programiranjem u Linux Mint 20

Prije svega, mi ćemo stvoriti .cpp datoteku na našem Linux Mint 20 sustavu. Jednostavno ćemo otići do mape Početna, stvoriti prazan dokument i nazvati ga Mutex.cpp. Jednom naša .cpp datoteka stvorena, otvorit ćemo je s uređivačem teksta. Nakon toga, na naš ćemo tip upisati kod prikazan na slikama ispod .cpp datoteka:

Kôd prikazan na dvije gornje slike stvorio je dvije različite niti. Prva nit odgovara zadatku # 1, dok druga nit odgovara zadatku # 2. Tada smo stvorili uzorak funkcije nazvane "Mutex funkcija". U ovoj funkciji prvo zaključavamo varijablu zaključavanja Mutex, a ona će se otključati tek kada nit # 1 završi posao # 1. Slično tome, varijabla zaključavanja Mutex opet će biti zaključana niti # 2 dok ne završi posao # 2. Ovu "Mutex funkciju" naziva funkcija "glavna".

Korak # 2: Sastavljanje C programa u Linux Mint 20

Nakon spremanja .cpp datoteku, sada ćemo je prevesti preko terminala Linux Mint 20 sa sljedećom naredbom:

$ gcc -o Mutex Mutex.cpp -pthread

Ovdje se "Mutex", nakon zastavice "-o", odnosi na naziv objektne datoteke koja će se stvoriti, dok "Mutex".cpp ”naziv je izvornika .cpp datoteku. Oznaka "-pthread" neophodna je za sastavljanje ovog programa jer je ovaj program napisan dok se koristi biblioteka "pthread". Ako izostavite ovu zastavicu, vaš se program neće sastaviti i rezultirat će pogreškama. Uspješna kompilacija našeg .cpp datoteka neće stvoriti nikakve poruke na terminalu, kao što je prikazano na donjoj slici:

Korak # 3: Pokretanje C programa u Linux Mint 20

Jednom kada je kreirana objektna datoteka pod nazivom "Mutex", možemo je pokrenuti pomoću sljedeće naredbe:

$ ./ Mutex

U izlazu našeg Mutexa.cpp program, primijetit ćete da je prvi posao 1 započeo, što znači da je nit # 1 stekla Mutex bravu. Nakon toga, posao 1 završava nakon nekog vremena. Zatim započinje posao 2, što znači da je nit # 2 stekla Mutex bravu. Otključat će se tek nakon završetka posla 2.

Zaključak

Ovaj je članak pružio detaljno objašnjenje upotrebe Posix Mutexa s C programiranjem u Linux Mint 20. Mutex se može vrlo učinkovito koristiti za izbjegavanje uvjeta utrke tijekom programiranja jednostavnim uključivanjem biblioteke Posix ili pthread u naš C kod. To ne samo da će osigurati dosljednost podataka već će i obradu učiniti mnogo učinkovitijom.

Najbolja stvar kod korištenja Posix biblioteke u Linuxu je ta što za nju čak ne trebamo instalirati nikakav specijalizirani softver, pakete ili kompajler. C kod se može jednostavno napisati u bilo kojem zadanom uređivaču teksta na Linuxu, a može se kompilirati i pokrenuti sa zadanim kompajlerima gcc ili g ++. Ovo se pokazalo dodatnim slojem lakoće i praktičnosti u korištenju Posix Mutexa s C programiranjem u Linux Mint 20.

Bitka za Wesnoth 1.13.6 Razvoj objavljen
Bitka za Wesnoth 1.13.6 objavljeno prošlog mjeseca, šesto je razvojno izdanje u izdanju 1.13.x series i donosi niz poboljšanja, ponajviše korisničkog ...
Kako instalirati League Of Legends na Ubuntu 14.04
Ako ste ljubitelj League of Legends, ovo je prilika za vas da testirate League of Legends. Imajte na umu da je LOL podržan na PlayOnLinux ako ste kori...
Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...