C Programmēšana

Posix Mutex ar C programmēšanu

Posix Mutex ar C programmēšanu
Šodienas raksts tiks koncentrēts uz Posix Mutex ar C programmēšanu lietošanu Linux Mint 20. Tomēr, pirms turpināt mūsu galveno piemēru, mēs vispirms vēlētos noskaidrot dažas terminoloģijas, lai jūs varētu viegli saprast scenārija piemēru, ar kuru mēs kopīgosim. Operētājsistēmās vītņu jēdziens tiek plaši izmantots. Vītnes būtībā ir apakšprocesi, kas tiek deleģēti ar dažādiem uzdevumiem. Lai izprastu pavedienu darbību, varat apsvērt šādu piemēru.

Pieņemsim, ka ir galvenā vītne A, kuras uzdevums ir aprēķināt mainīgo lielumu w un y summu, kur w = x + 1 un y = z + 2. Mainīgo x un z vērtības ir jāielādē lietotājam. Šajā scenārijā mēs varam izveidot divus pavedienus B un C. B pavediena uzdevums būs ņemt no lietotāja mainīgā x vērtību, palielināt to par 1 un saglabāt mainīgajā w. Vītnes C uzdevums būs no lietotāja paņemt mainīgā z vērtību, palielināt to par 2 un pēc tam saglabāt mainīgajā y. Visbeidzot, abi šie pavedieni nodos šos rezultātus galvenajam pavedienam A, kas pēc tam aprēķinās to summu un parādīs gala rezultātu.

Ja mēs šajā scenārijā nebūtu izveidojuši nevienu pavedienu, tad visus uzdevumus galvenais pavediens A būtu izpildījis daudz lielākā laikā. Tādā veidā pavedieni var efektīvi veikt aprēķinus bez liekas kavēšanās. Tomēr ir ļoti lielas bažas par pavedienu izmantošanu, kas ir pazīstams kā “sacensību stāvoklis”. Tā ir situācija, kad divi pavedieni mēģina piekļūt un modificēt tos pašus datus, tādējādi atstājot tos pretrunīgus. Kā programmētājam mūsu mērķim jābūt izvairīties no sacensību apstākļiem visgraciozākajā veidā.

Visbiežāk izmantotais risinājums, lai izvairītos no sacensību apstākļiem, ir Mutex lietošana. Mutex nozīmē savstarpēju izslēgšanu, un tas būtībā nodrošina bloķēšanas mehānismu, kas vienlaikus neļauj vairāk nekā vienam lietotājam piekļūt kritiskajiem datiem un tos modificēt. Tādā veidā tiek nodrošināta datu konsekvence. Posix būtībā ir bibliotēka, kas mums piedāvā dažādas iebūvētās funkcijas, kas ievērojami atvieglo pavedienu un Mutex ieviešanu. Izmantojot šo piemēru, mēs centīsimies iemācīties Posix Mutex ar C programmēšanu lietošanu Linux Mint 20.

Piemērs Posix Mutex lietošanai ar C programmēšanu Linux Mint 20

Mēs veiksim šādas trīs darbības, lai iepazītos ar Posix Mutex ar C programmēšanu Linux Mint 20.

1. solis: Programmas izveide, demonstrējot Posix Mutex ar C programmēšanu lietošanu Linux Mint 20

Pirmkārt, mēs izveidosim a .cpp fails mūsu Linux Mint 20 sistēmā. Mēs vienkārši dosimies uz mapi Sākums, izveidosim tukšu dokumentu un nosauksim to par Mutex.cpp. Reiz mūsu .cpp fails ir izveidots, mēs to atvērsim ar teksta redaktoru. Pēc tam mēs ierakstīsim kodu, kas parādīts zemāk esošajos attēlos .cpp fails:

Kods, kas parādīts divos iepriekšējos attēlos, izveidoja divus dažādus pavedienus. Pirmais pavediens atbilst Darba Nr. 1, bet otrais pavediens - Darba Nr. 2. Tad mēs esam izveidojuši paraugfunkciju ar nosaukumu “Mutex Function”. Šajā funkcijā mēs vispirms bloķējam Mutex bloķēšanas mainīgo, un tas tiks atbloķēts tikai tad, kad 1. pavediens būs pabeidzis darbu # 1. Līdzīgi Mutex bloķēšanas mainīgais atkal tiks bloķēts ar pavedienu Nr. 2, līdz tas pabeidz darbu Nr. 2. Šo “Mutex Function” izsauc funkcija “main”.

2. solis: C programmas apkopošana Linux Mint 20

Pēc saglabāšanas .cpp failu, tagad mēs to apkoposim caur Linux Mint 20 termināli ar šādu komandu:

$ gcc -o Mutex Mutex.cpp -pvītne

Šeit “Mutex” aiz “-o” karoga attiecas uz izveidojamā objekta faila nosaukumu, turpretī “Mutex”.cpp ”ir oriģināla nosaukums .cpp fails. Karogs “-pthread” ir nepieciešams, lai kompilētu šo programmu, jo šī programma tiek rakstīta, izmantojot bibliotēku “pthread”. Ja jūs izlaidīsit šo karodziņu, jūsu programma netiks apkopota un radīs dažas kļūdas. Veiksmīga mūsu kompilācija .cpp fails neradīs nevienu ziņojumu terminālā, kā parādīts zemāk esošajā attēlā:

3. solis: C programmas palaišana Linux Mint 20

Kad objekta fails ar nosaukumu “Mutex” ir izveidots, mēs to varam palaist, izmantojot šādu komandu:

$ ./ Mutex

Mūsu Mutex izlaidumā.cpp programmu, jūs ievērosiet, ka pirmais darbs 1 ir sācies, kas nozīmē, ka 1. pavediens ir ieguvis Mutex slēdzeni. Pēc tam 1. darbs pēc kāda laika beidzas. Pēc tam sākas darbs Job 2, kas nozīmē, ka pavediens Nr. 2 ir ieguvis Mutex slēdzeni. Tas tiks atbloķēts tikai pēc tam, kad 2. darbs būs pabeigts.

Secinājums

Šajā rakstā tika sniegts padziļināts paskaidrojums par Posix Mutex ar C programmēšanu lietošanu Linux Mint 20. Mutex var ļoti efektīvi izmantot, lai izvairītos no sacensību apstākļiem programmēšanas laikā, vienkārši iekļaujot Posix vai pthread bibliotēku mūsu C kodā. Tas ne tikai nodrošinās datu konsekvenci, bet arī padarīs apstrādi daudz efektīvāku.

Vislabāk par Posix bibliotēkas izmantošanu Linux ir tas, ka mums pat nav jāinstalē tai specializēta programmatūra, pakotnes vai kompilators. C kodu var vienkārši ierakstīt jebkurā noklusējuma teksta redaktorā Linux, un to var apkopot un palaist ar noklusējuma gcc vai g ++ kompilatoriem. Izrādās, ka tas ir papildu vienkāršības un ērtības slānis Posix Mutex ar C programmēšanu lietošanai Linux Mint 20.

Kā nomainīt peles kreiso un labo pogu operētājsistēmā Windows 10
Tas ir diezgan normāli, ka visas datora peles ierīces ir ergonomiski izstrādātas lietotājiem ar labo roku. Bet ir pieejamas peles ierīces, kas ir īpaš...
Atdariniet peles klikšķus, virzot kursoru, izmantojot operētājsistēmā Windows 10 bezklikšķu peli
Peles vai tastatūras lietošana nepareizā pozā, ja to lieto pārmērīgi daudz, var izraisīt daudz veselības problēmu, tostarp spriedzi, karpālā kanāla si...
Pievienojiet peles žestus operētājsistēmai Windows 10, izmantojot šos bezmaksas rīkus
Pēdējos gados datori un operētājsistēmas ir ievērojami attīstījušās. Bija laiks, kad lietotājiem bija jāizmanto komandas, lai pārvietotos pa failu pār...