C programavimas

„Posix Mutex“ su C programavimu

„Posix Mutex“ su C programavimu
Šios dienos straipsnis bus sutelktas į „Posix Mutex“ su C programavimu naudojimą „Linux Mint 20“. Tačiau prieš tęsdami pagrindinį pavyzdį, pirmiausia norėtume išaiškinti keletą terminologijų, kad galėtumėte lengvai suprasti scenarijaus pavyzdį, kuriuo pasidalinsime su jumis. Operacinėse sistemose sriegio samprata yra plačiai naudojama. Siūlai iš esmės yra paprocesai, kurie yra deleguojami su skirtingomis užduotimis. Norėdami suprasti gijų veikimą, galite apsvarstyti šį pavyzdį.

Tarkime, kad yra pagrindinė gija A, kurios užduotis yra apskaičiuoti kintamųjų w ir y sumą, kur w = x + 1 ir y = z + 2. Kintamųjų x ir z reikšmes turi gauti vartotojas. Pagal šį scenarijų galime sukurti dvi gijas - B ir C. B gijos užduotis bus paimti iš vartotojo kintamojo x vertę, padidinti ją 1 ir išsaugoti kintamajame w. C gijos užduotis bus paimti iš vartotojo kintamojo z vertę, padidinti ją 2 ir išsaugoti kintamajame y. Galiausiai abi šios gijos šiuos rezultatus perduos pagrindinei gijai A, kuri paskaičiuos jų sumą ir parodys galutinį rezultatą.

Jei šiame scenarijuje nebūtume sukūrę jokių gijų, visas užduotis pagrindinė gija A būtų atlikusi per daug didesnį laiką. Tokiu būdu gijos gali efektyviai atlikti jūsų skaičiavimus be nereikalingo delsimo. Tačiau yra labai didelis rūpestis dėl gijų naudojimo, kuris yra žinomas kaip „lenktynių sąlyga“. Tai situacija, kai dvi gijos bando pasiekti ir modifikuoti tuos pačius duomenis, todėl palieka juos nenuoseklius. Kaip programuotojas, mūsų tikslas turėtų būti vengti varžybų sąlygų kuo grakščiau.

Dažniausiai naudojamas sprendimas siekiant išvengti lenktynių sąlygų yra „Mutex“ naudojimas. „Mutex“ reiškia abipusę atskirtį ir iš esmės suteikia mums užrakto mechanizmą, kuris neleidžia daugiau nei vienam vartotojui vienu metu pasiekti ir keisti svarbiausių duomenų. Tokiu būdu užtikrinamas duomenų nuoseklumas. „Posix“ iš esmės yra biblioteka, kurioje pateikiamos skirtingos integruotos funkcijos, kurios žymiai palengvina gijų ir „Mutex“ diegimą. Pateikdami šį pavyzdį, mes bandysime išmokti naudoti „Posix Mutex“ su „C“ programavimu „Linux Mint 20“.

„Posix Mutex“ su „C“ programavimo „Linux Mint 20“ pavyzdys

Atliksime šiuos tris veiksmus, norėdami sužinoti, kaip naudotis „Posix Mutex“ su „C“ programavimu „Linux Mint 20“.

1 žingsnis: Programos, demonstruojančios „Posix Mutex“ su „C“ programavimu, naudojimas „Linux Mint 20“

Pirmiausia sukursime a .cpp failas mūsų „Linux Mint 20“ sistemoje. Paprasčiausiai eisime į savo namų aplanką, sukursime tuščią dokumentą ir pavadinsime jį „Mutex“.cpp. Kartą mūsų .sukurtas cpp failas, atidarysime jį su teksto redaktoriumi. Po to mes įveskite kodą, parodytą žemiau esančiuose paveikslėliuose .CPP failas:

Dviejuose aukščiau esančiuose vaizduose parodytas kodas sukūrė dvi skirtingas gijas. Pirmoji gija atitinka Darbą Nr. 1, o antroji gija - Darbą Nr. 2. Tada mes sukūrėme pavyzdinę funkciją pavadinimu „Mutex Function“. Šioje funkcijoje mes pirmiausia užrakiname „Mutex“ užrakto kintamąjį ir jis bus atrakintas tik tada, kai Nr. 1 užbaigs užduotį Nr. 1. Panašiai „Mutex“ užrakto kintamasis vėl bus užrakintas gija Nr. 2, kol baigs užduotį Nr. 2. Ši „Mutex“ funkcija vadinama „pagrindine“ funkcija.

2 žingsnis: C programos kompiliavimas „Linux Mint 20“

Išsaugoję .cpp failą, mes jį sukompiliuosime per „Linux Mint 20“ terminalą naudodami šią komandą:

$ gcc -o „Mutex Mutex“.cpp -pasriegis

Čia „Mutex“ po „-o“ vėliava nurodo kuriamo objekto failo pavadinimą, o „Mutex“.cpp “yra originalo pavadinimas .CPP failas. „-Thread“ vėliava yra būtina norint sudaryti šią programą, nes ši programa parašyta naudojant „pthread“ biblioteką. Jei praleisite šią žymę, jūsų programa nebus kompiliuojama ir bus padarytos klaidos. Sėkmingas mūsų .„cpp“ failas terminale nespaus jokių pranešimų, kaip parodyta žemiau esančiame paveikslėlyje:

3 žingsnis: C programos vykdymas „Linux Mint 20“

Sukūrus objekto failą „Mutex“, jį galime paleisti naudodami šią komandą:

$ ./ Mutex

Mūsų „Mutex“ išvestyje.cpp programą, pastebėsite, kad pirmasis „Job 1“ prasidėjo, o tai reiškia, kad gija Nr. 1 įsigijo „Mutex“ užraktą. Po to Jobas 1 po kurio laiko baigia darbą. Tada prasideda „Job 2“, o tai reiškia, kad gija Nr. 2 įsigijo „Mutex“ užraktą. Jis bus atrakintas tik baigus „Job 2“.

Išvada

Šiame straipsnyje buvo išsamiai paaiškinta, kaip „Linux Mint 20“ naudoti „Posix Mutex“ su C programavimu. „Mutex“ galima labai efektyviai naudoti norint išvengti lenktynių sąlygų programuojant, tiesiog įtraukiant „Posix“ ar „pthread“ biblioteką į mūsų C kodą. Tai ne tik užtikrins duomenų nuoseklumą, bet ir padarys žymiai efektyvesnį tvarkymą.

Geriausias dalykas naudojant „Posix“ biblioteką „Linux“ yra tai, kad mums net nereikia diegti jokios specialios programinės įrangos, paketų ar kompiliatorių. C kodą galima tiesiog įrašyti į bet kurį numatytąjį „Linux“ teksto redaktorių ir jį galima kompiliuoti ir paleisti su numatytaisiais „gcc“ arba „g ++“ kompiliatoriais. Pasirodo, tai yra papildomas „Posix Mutex“ su „C“ programavimo „Linux Mint 20“ naudojimo paprastumo ir patogumo sluoksnis.

Kaip padidinti FPS sistemoje „Linux“?
FPS reiškia Kadrai per sekundę. FPS užduotis yra išmatuoti kadrų greitį atkuriant vaizdo įrašus ar žaidimus. Paprastais žodžiais, nepertraukiamų viso ...
Populiariausi „Oculus App Lab“ žaidimai
Jei esate „Oculus“ laisvų rankų įrangos savininkas, turite žinoti, kaip krauti iš šono. Šoninis įkėlimas yra ne parduotuvėje esančio turinio įdiegimas...
10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...