C Programiranje

POSIX semaforji s programiranjem C

POSIX semaforji s programiranjem C

POSIX se nanaša na prenosni vmesnik OS, ki je standard IEEE, razvit za pomoč pri prenosljivosti različnih aplikacij. POSIX si prizadeva zgraditi skupno standardizirano različico UNIX s sodelovanjem ponudnikov. Olajšalo bi prenos aplikacij med strojne platforme, če bi bile učinkovite. Hewlett-Packard integrira POSIX v svoj licenčni MPE / iX OS različice 5.0 in HP / UXX različice 10.0 (UNIX).

Standard POSIX ima veliko več kot deset delov, dva pa je enostavno dobiti. POSIX.1 opisuje programske vmesnike C (tj.e., knjižnica sistemskih klicev) za datoteke, postopke in V / I terminale. Knjižnica paketov C POSIX za platforme POSIX je okvir standardne knjižnice C. To je določeno hkrati s standardnim ANSI C. Da je POSIX združljiv s standardom C, je bilo izvedenih več poskusov. POSIX ponuja dodatne funkcije k tistim, ki so uvedene v standardu C.

POSIX semaforji

Semafor je podatkovna struktura, ki se pogosto uporablja za sinhronizacijo procesov in pomoč niti, ne da bi medsebojno delovale skupaj. Vmesnik za semaforje določa standard POSIX. Ni del Pthreads. Vendar večina UNIX-ov, ki podpirajo Pthreads, ponuja celo semaforje. V okoljih, podobnih Unixu, kot je Linux, se semaforji združijo s čakalnimi vrstami sporočil in skupnim pomnilnikom pod storitvami Interprocess Communication (IPC). Starejši semaforji Framework V in sodobni semaforji POSIX postanejo dve vrsti semaforjev. Klicanje po sistemu POSIX Semaphore je veliko lažje od klicev sistema V V Semaphore. Čeprav je semaforje System V lažje dobiti, zlasti na prejšnjih platformah, podobnih Unixu. Programe, ki uporabljajo semaforje POSIX, je treba povezati s knjižnico Pthread. V tem članku si bomo ogledali semaforje POSIX.

Zakaj semaforji POSIX?

Obstaja veliko vprašanje okoli niti, kar je "dirka". To je okoliščina, v kateri si dve niti skušata pridobiti in spremeniti iste informacije, zaradi česar so si nasprotujoče. Da bi se izognili dirkaškim pogojem, že zelo dolgo uporabljamo semaforje.

Na voljo so dve vrsti semaforjev:

Binarni semafor:

Prav tako je prepoznana kot mutex ključavnica. Imel bi le dve možni vrednosti, 0 in 1. Vrednost bo inicializirana kot 1. Uporablja se za uveljavljanje številnih postopkov za reševanje resne težave s poglavjem.

Štetje semaforja:

Njegova velikost se lahko razlikuje v neomejeni domeni. Uporablja se za pooblastilo za dostop do virov številnih primerkov.

Okvir Linux POSIX ima integrirano repozitorij Semaphore. Za njegovo uporabo moramo:

Skoraj vse metode in obrazci POSIX Semaphore so prototipirani ali določeni v 'Semaphore.h '. Semafor bomo uporabili za opis entitete ali predmeta kot:

>> sem_t sem_name;

Tu so različne funkcije, ki bi jih uporabljali v POSIX Semaphore.

Sem_init

Če želite inicializirati semafor, morate uporabiti metodo sem_init. V tej funkciji sem ustreza inicializiranemu semaforju. Pshared je pasica ali zastavica, ki določa, ali je semafor mogoče deliti s forked () postopkom ali ne. LinuxThreads trenutno ne podpira skupnih semaforjev. Vrednost argumenta je začetna vrednost, pri kateri je semafor pritrjen.

>> int sem_init (sem_t * sem, int pshared, nepodpisana int vrednost);

Sem_ čakaj

Za zadrževanje / zaklepanje semaforja ali njegovo čakanje bomo uporabili metodo sem-wait. Če ima semafor negativno vrednost, bo klicni cikel samodejno blokiran. Kadar koli druga nit pokliče sem_post, se prebudi eden od že zamašenih procesov.

>> int sem_cait (sem_t * sem);

Sem_post

Za povečanje vrednosti semaforja bomo uporabili metodo sem_post. Po klicu bo sem_post zvišal vrednost in prebudil se bo eden od že zamašenih ali čakalnih procesov.

>> int sem_post (sem_t * sem);

Sem_getvalue

Če želite izvedeti več o vrednosti semaforja, morate uporabiti spodnjo funkcijo sem_getvalue. Pridobila bo sedanjo vrednost semaforja in bo postavljena na cilj, ki je usmerjen na val.

>> Int sem_getvalue (sem_t * sem, int * valp);

Sem_destroy

Če želite uničiti semafor, uporabite metodo sem_destroy. Če se bo semafor nadaljeval, v semaforju ne bo čakala nobena nit.

>> Int sem_destroy (sem_t * sem);

Namestite pripomoček GCC

Če želite sestaviti kodo POSIX Semaphore C, morate imeti v sistemu Linux nameščen pripomoček gcc. V ta namen odprite svoj ukazni terminal in preizkusite spodnji ukaz.

$ sudo apt-get install gcc

Potrdite svoje dejanje s pritiskom Y.

Izvedba POSIX Semaphore s programiranjem C v Ubuntuju

Na samem začetku morate ustvariti novo datoteko z .cpp v Ubuntu 20.04 sistem. Za to se morate pomakniti do domačega imenika in ustvariti novo prazno datoteko z imenom new.cpp. Ustvarite ga lahko tudi z ukazom na dotik v ukaznem terminalu.

Vidite, da je novo.cpp je bila ustvarjena v domačem imeniku.


Po ustvarjanju .cpp, jo odprite kot urejevalnik besedil v vašem sistemu Linux in v to datoteko zapišite spodnjo kodo, kakršna je. Po tem ga shranite in zaprite.

Izvedite program POSIX Semaphore C v Ubuntu 20.04

Odprite terminal v Ubuntu 20.04 in izvedite spodnji ukaz gcc, ki mu sledi ime datoteke.

$ gcc ime datoteke.c -lpthread -lrt

Oblikovani sta 2 niti, ena se oblikuje po 2 sekundah druge. Po prejemu vijaka že prvi navoj spi 4 sekunde. Torej, potem ko je bil poklican, se druga nit ne bo neposredno pridružila in to se bo pojavilo 4-2 = 2 sekundi po klicu. Tu je rezultat:

Če ne bi uporabili semaforja, bi bil glede na preklop konteksta rezultat morda takšen:

Zaključek

V tem priročniku je podan podroben pregled uporabe POSIXSemaphore s programiranjem C v Ubuntu 20. Z zgolj uporabo knjižnice POSIX ali Pthread skozi določeno kodo C je mogoče POSIX Semaphore dokaj enostavno uporabiti za preprečevanje dirkalnih razmer med kodiranjem.

Nadzirajte in upravljajte gibanje miške med več monitorji v sistemu Windows 10
Upravitelj miške z dvojnim zaslonom vam omogoča nadzor in konfiguriranje gibanja miške med več monitorji, tako da upočasni gibanje blizu meje. Windows...
WinMouse vam omogoča prilagajanje in izboljšanje premikanja kazalca miške v računalniku z operacijskim sistemom Windows
Če želite izboljšati privzete funkcije kazalca miške, uporabite brezplačno programsko opremo WinMouse. Dodaja več funkcij, s pomočjo katerih boste kar...
Levi gumb miške ne deluje v sistemu Windows 10
Če s prenosnikom ali namiznim računalnikom uporabljate namensko miško, vendar gumb miške z levim klikom ne deluje v operacijskem sistemu Windows 10/8/...