C Programiranje

Posix Mutex s programiranjem C

Posix Mutex s programiranjem C
Današnji članek bo osredotočen na uporabo Posix Mutexa s programiranjem C v Linux Mint 20. Preden pa se odpravimo na naš glavni primer, bi radi najprej razčistili nekaj terminologij, tako da boste zlahka razumeli primer scenarija, ki ga bomo delili z vami. V operacijskih sistemih se koncept navojev pogosto uporablja. Niti so v bistvu podprocesi, ki se prenesejo z različnimi nalogami. Za razumevanje delovanja niti lahko upoštevate naslednji primer.

Recimo, da obstaja glavna nit A, katere naloga je izračunati vsoto spremenljivk w in y, kjer je w = x + 1 in y = z + 2. Vrednosti spremenljivk x in z mora uporabnik pridobiti. V tem primeru lahko ustvarimo dve niti, B in C. Naloga niti B bo uporabniku vzeti vrednost spremenljivke x, jo povečati za 1 in shraniti v spremenljivko w. Naloga niti C bo uporabniku vzeti vrednost spremenljivke z, jo povečati za 2 in nato shraniti v spremenljivko y. Končno bosta obe niti predali te rezultate glavni niti A, ki bo nato izračunala njihovo vsoto in prikazala končni rezultat.

Če v tem scenariju ne bi ustvarili nobene niti, bi vse naloge glavna nit A izvedla v veliko večjem času. Tako lahko niti učinkovito izvedejo vaše izračune brez nepotrebnih zamud. Vendar obstaja zelo zaskrbljujoča uporaba niti, ki je znana kot "dirka". To je situacija, v kateri dve niti poskušata dostopati do enakih podatkov in jih spremeniti, zato ostaneta nedosledna. Kot programer bi moral biti naš cilj izogibanje dirkalnim pogojem na najbolj graciozen način.

Najpogosteje uporabljena rešitev za izogibanje dirkalnim pogojem je uporaba Mutexa. Mutex pomeni vzajemno izključitev in nam v bistvu zagotavlja mehanizem za zaklepanje, ki hkrati preprečuje dostop in spreminjanje kritičnih podatkov več kot enim uporabnikom. Na ta način je zagotovljena doslednost podatkov. Posix je v bistvu knjižnica, ki nam predstavlja različne vgrajene funkcije, ki olajšajo izvajanje niti in Mutexa. Z naslednjim primerom se bomo poskušali naučiti uporabe Posix Mutexa s programiranjem C v Linux Mint 20.

Primer uporabe Posix Mutexa s programiranjem na C v Linux Mint 20

Izvedli bomo naslednje tri korake, da vas bomo vodili skozi uporabo programa Posix Mutex s programiranjem C v Linux Mint 20.

1. korak: Ustvarjanje programa, ki dokazuje uporabo Posix Mutexa s programiranjem C v Linux Mint 20

Najprej bomo ustvarili .cpp v našem sistemu Linux Mint 20. Preprosto bomo šli v našo mapo Domov, ustvarili prazen dokument in ga poimenovali Mutex.cpp. Enkrat naš .cpp je ustvarjena, odprli jo bomo z urejevalnikom besedil. Po tem bomo na našo tip vnesli kodo, prikazano na spodnjih slikah .datoteka cpp:

Koda, prikazana na zgornjih slikah, je ustvarila dve različni niti. Prva nit ustreza opravilu 1, druga nit pa opravilu 2. Nato smo ustvarili vzorčno funkcijo z imenom "Mutex Function". V tej funkciji najprej zaklenemo spremenljivko zaklepanja Mutex in odklenjena bo šele, ko nit # 1 konča opravilo # 1. Podobno bo spremenljivka zaklepanja Mutex znova zaklenjena z nitjo 2, dokler ne konča opravila št. To funkcijo "Mutex" pokliče funkcija "main".

2. korak: Sestavljanje programa C v Linux Mint 20

Po shranjevanju datoteke .cpp, jo bomo zdaj zbrali prek terminala Linux Mint 20 z naslednjim ukazom:

$ gcc -o Mutex Mutex.cpp -pthread

Tu se "Mutex" za zastavico "-o" nanaša na ime predmetne datoteke, ki bo ustvarjena, medtem ko "Mutex".cpp "je ime izvirnika .cpp datoteko. Oznaka “-pthread” je potrebna za prevajanje tega programa, ker je ta napisan med uporabo knjižnice “pthread”. Če to zastavico izpustite, vaš program ne bo preveden in bo povzročil nekaj napak. Uspešna kompilacija našega .cpp datoteka na terminalu ne bo ustvarila nobenih sporočil, kot je prikazano na spodnji sliki:

3. korak: Zagon programa C v Linux Mint 20

Ko je predmetna datoteka z imenom »Mutex« ustvarjena, jo lahko zaženemo z naslednjim ukazom:

$ ./ Mutex

V izhodu našega Mutexa.cpp, boste opazili, da se je prvo opravilo 1 začelo, kar pomeni, da je nit 1 pridobila ključavnico Mutex. Po tem se Job 1 čez nekaj časa konča. Nato se začne delo 2, kar pomeni, da je nit # 2 pridobila ključavnico Mutex. Odklenjena bo šele, ko se opravilo 2 opravi.

Zaključek

V tem članku je bila poglobljena razlaga uporabe Posix Mutexa s programiranjem C v Linux Mint 20. Mutex lahko zelo učinkovito uporabljate za izogibanje dirkalnim pogojem med programiranjem, tako da preprosto vključite knjižnico Posix ali pthread v našo kodo C. To ne bo le zagotovilo doslednosti podatkov, ampak bo tudi obdelava veliko bolj učinkovita.

Najboljša stvar pri uporabi knjižnice Posix v Linuxu je, da zanjo niti ne potrebujemo posebne programske opreme, paketov ali prevajalnika. Kodo C lahko preprosto zapišete v kateri koli privzeti urejevalnik besedila v Linuxu in jo lahko sestavite in zaženete s privzetimi prevajalniki gcc ali g ++. To se izkaže kot dodatna plast enostavnosti in udobja pri uporabi Posix Mutexa s programiranjem C v Linux Mint 20.

Srednji gumb miške ne deluje v sistemu Windows 10
The srednji gumb miške vam pomaga, da se pomikate po dolgih spletnih straneh in zaslonih z veliko podatkov. Če se to ustavi, boste na koncu uporabili ...
Kako spremeniti levi in ​​desni gumb miške na računalniku z operacijskim sistemom Windows 10
Povsem normalno je, da so vse naprave računalniške miške ergonomsko zasnovane za desničarje. Na voljo pa so miške, ki so posebej zasnovane za levičarj...
Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...