C Programmeerimine

C-programmeerimisega Posix Mutex

C-programmeerimisega Posix Mutex
Tänane artikkel keskendub C-programmeerimisega Posix Mutexi kasutamisele Linux Mint 20-s. Enne peamise näite juurde asumist tahaksime kõigepealt selgitada mõned terminoloogiad, nii et saate hõlpsasti mõista näite stsenaariumi, mida me teiega jagame. Operatsioonisüsteemides kasutatakse keermestamise kontseptsiooni laialdaselt. Teemad on põhimõtteliselt alamprotsessid, mis on delegeeritud erinevate ülesannetega. Teemade toimimise mõistmiseks võite kaaluda järgmist näidet.

Oletame, et on olemas põhilõng A, mille ülesandeks on arvutada muutujate w ja y summa, kus w = x + 1 ja y = z + 2. Muutujate x ja z väärtused peab kasutaja tooma. Selle stsenaariumi korral saame luua kaks lõime, B ja C. Keerme B ülesandeks on võtta kasutajalt muutuja x väärtus, suurendada seda 1 võrra ja salvestada muutujasse w. Keerme C ülesandeks on võtta kasutajalt muutuja z väärtus, suurendada seda 2 võrra ja salvestada siis muutujasse y. Lõpuks edastavad mõlemad need lõimed need tulemused peaniidile A, kes siis arvutab nende summa ja kuvab lõpptulemuse.

Kui me poleks selle stsenaariumi korral ühtegi lõime loonud, oleks põhilõng A kõik ülesanded sooritanud palju suurema aja jooksul. Nii saavad niidid teie arvutusi tõhusalt teostada ilma tarbetute viivitusteta. Kuid niitide kasutamisega on väga suur mure, mida tuntakse kui võistlusolukorda. See on olukord, kus kaks lõime üritavad juurdepääsu samadele andmetele ja neid muuta, jättes need seetõttu vastuolulisteks. Programmeerijana peaks meie eesmärk olema võistlustingimuste vältimine kõige graatsilisemal viisil.

Võistlustingimuste vältimiseks kasutatakse kõige sagedamini Mutexi kasutamist. Mutex tähistab vastastikust tõrjutust ja pakub meile põhimõtteliselt lukustusmehhanismi, mis takistab kriitiliste andmete juurdepääsu ja muutmist mitme kasutaja jaoks korraga. Nii tagatakse andmete järjepidevus. Posix on põhimõtteliselt raamatukogu, mis pakub meile erinevaid sisseehitatud funktsioone, mis muudavad lõimede ja Mutexi juurutamise palju lihtsamaks. Järgmise näite abil proovime õppida Linux Mint 20-s Posix Mutexi kasutamist koos C-programmeerimisega.

Näide Posix Mutexi kasutamisest koos C-programmeerimisega Linux Mint 20-s

Teeme järgmised kolm sammu, et tutvuda Linuxi Mint 20 Posix Mutexi koos C-programmeerimisega.

Samm nr 1: programmi Mint loomine, mis näitab Posix Mutexi kasutamist koos C-programmeerimisega Linux Mint 20-s

Kõigepealt loome a .cpp-fail meie Linux Mint 20 süsteemis. Läheme lihtsalt oma kausta Kodu, loome tühja dokumendi ja paneme sellele nimeks Mutex.cpp. Kunagi meie .cpp-fail on loodud, avame selle tekstiredaktoriga. Pärast seda tippime allolevatel piltidel näidatud koodi enda juurde .cpp-fail:

Eespool kahel pildil näidatud kood lõi kaks erinevat lõime. Esimene lõime vastab tööle nr 1, teine ​​niit aga tööle nr 2. Seejärel oleme loonud näidisfunktsiooni nimega "Mutex Function". Selles funktsioonis lukustame kõigepealt Mutexi lukumuutuja ja see avatakse ainult siis, kui lõim nr 1 lõpetab töö # 1. Samamoodi lukustatakse Mutexi lukumuutuja uuesti lõimega nr 2, kuni see lõpetab töö # 2. Seda funktsiooni "Mutex" kutsub funktsioon "main".

Samm nr 2: C-programmi koostamine Linux Mint 20-s

Pärast salvestamist .cpp-faili, kompileerime selle nüüd Linux Mint 20 terminali kaudu järgmise käsuga:

$ gcc -o Mutex Mutex.cpp -pthread

Siin viitab “Mutex” pärast lippu “-o” loodava objektifaili nimele, samas kui “Mutex”.cpp ”on originaali nimi .cpp-fail. Lipp “-pthread” on selle programmi kompileerimiseks vajalik, kuna see programm on kirjutatud teegi “pthread” kasutamise ajal. Kui jätate selle lipu välja, siis teie programmi ei kompileerita ja see muudab mõned vead. Meie edukas koostamine .cpp-fail ei tooda terminalis sõnumeid, nagu on näidatud alloleval pildil:

Samm # 3: C-programmi käitamine Linux Mint 20-s

Kui objektifail nimega “Mutex” on loodud, saame selle käivitada järgmise käsu abil:

$ ./ Mutex

Meie Mutexi väljundis.cpp programmi märkate, et esimene töö 1 on alanud, mis tähendab, et lõim nr 1 on omandanud Mutexi luku. Pärast seda Iibi 1 mõne aja pärast lõpetab. Seejärel algab töö 2, mis tähendab, et lõim nr 2 on omandanud Mutexi luku. See avatakse ainult siis, kui 2. töö on lõpetatud.

Järeldus

Selles artiklis kirjeldati põhjalikult Posix Mutexi kasutamist koos C-programmeerimisega Linux Mint 20-s. Mutexi saab programmeerimisel võistlustingimuste vältimiseks kasutada väga tõhusalt, lisades Posixi või pthreadi teegi lihtsalt meie C-koodi. See mitte ainult ei taga andmete järjepidevust, vaid muudab ka töötlemise palju tõhusamaks.

Parim Posixi teegi kasutamisel Linuxis on see, et me ei pea selle jaoks isegi spetsiaalset tarkvara, pakette ega kompilaatorit installima. C-koodi saab lihtsalt kirjutada mis tahes Linuxi vaiketekstiredaktoris ning selle saab kompileerida ja käivitada vaikimisi gcc või g ++ kompilaatoritega. See osutub täiendavaks lihtsuse ja mugavuse kihiks Posix Mutexi koos C-programmeerimisega Linux Mint 20-s.

Installige uusim OpenRA strateegiamäng Ubuntu Linuxi
OpenRA on tasuta / tasuta reaalajas strateegiamängumootor, mis loob uuesti Westwoodi varased mängud nagu klassikaline Command & Conquer: Red Alert. Ja...
Installige Linuxile uusim Dolphin Emulator for Gamecube & Wii
Dolphini emulaator võimaldab teil mängida valitud Gamecube & Wii mänge Linuxi personaalarvutites (PC). Vabalt saadaval oleva ja avatud lähtekoodiga m...
Kuidas kasutada GameConquerori petumootorit Linuxis
Artikkel sisaldab juhendit GameConquerori petumootori kasutamise kohta Linuxis. Paljud kasutajad, kes mängivad Windowsis mänge, kasutavad rakendust „C...