C Ohjelmointi

Posix Mutex C-ohjelmoinnilla

Posix Mutex C-ohjelmoinnilla
Tämän päivän artikkeli keskittyy Posix Mutexin ja C-ohjelmoinnin käyttöön Linux Mint 20: ssä. Ennen kuin siirrymme pääesimerkkiin, haluaisimme kuitenkin selvittää muutaman terminologian, jotta voit helposti ymmärtää esimerkkiskenaarion, jonka jaamme kanssasi. Käyttöjärjestelmissä ketjuttamisen käsitettä käytetään laajasti. Viestiketjut ovat periaatteessa aliprosesseja, jotka delegoidaan eri tehtävien kanssa. Voit tarkastella seuraavaa esimerkkiä ymmärtääksesi ketjujen toiminnan.

Oletetaan, että on olemassa pääketju A, jonka tehtävänä on laskea muuttujien w ja y summa, missä w = x + 1 ja y = z + 2. Käyttäjä hakee muuttujien x ja z arvot. Tässä skenaariossa voimme luoda kaksi ketjua, B ja C. Lankan B tehtävänä on ottaa muuttujan x arvo käyttäjältä, lisätä sitä yhdellä ja tallentaa se muuttujaan w. Lankan C tehtävänä on ottaa muuttujan z arvo käyttäjältä, lisätä sitä 2 ja tallentaa se sitten muuttujaan y. Lopuksi molemmat säikeet luovuttavat nämä tulokset pääkierteelle A, joka sitten laskee niiden summan ja näyttää lopputuloksen.

Jos emme olisi luoneet ketjuja tässä skenaariossa, pääketju A olisi suorittanut kaikki tehtävät paljon suuremmassa ajassa. Tällä tavalla ketjut voivat suorittaa laskutasi tehokkaasti ilman turhia viivytyksiä. Langan käytöstä on kuitenkin erittäin suuri huolenaihe, joka tunnetaan nimellä "kilpailutila". Kyseessä on tilanne, jossa kaksi ketjua yrittää päästä käsiksi ja muokata samoja tietoja, jolloin ne ovat epäjohdonmukaisia. Ohjelmoijana tavoitteemme tulisi olla välttää kilpailuolosuhteet sulavimmalla tavalla.

Yleisimmin käytetty ratkaisu kilpailuolosuhteiden välttämiseksi on Mutexin käyttö. Mutex tarkoittaa keskinäistä poissulkemista, ja se tarjoaa meille periaatteessa lukitusmekanismin, joka estää kriittisten tietojen pääsyn ja muokkaamisen useammalle kuin yhdelle käyttäjälle kerrallaan. Tällä tavoin varmistetaan tietojen yhdenmukaisuus. Posix on pohjimmiltaan kirjasto, joka tarjoaa meille erilaisia ​​sisäänrakennettuja toimintoja, jotka helpottavat ketjujen ja Mutexin käyttöönottoa. Seuraavan esimerkin avulla yritämme oppia Posix Mutexin käytön C-ohjelmoinnilla Linux Mint 20: ssä.

Esimerkki Posix Mutexin käytöstä C-ohjelmoinnin kanssa Linux Mint 20: ssä

Suoritamme seuraavat kolme vaihetta Positx Mutexin ja C-ohjelmoinnin käytön opastamiseksi Linux Mint 20: ssä.

Vaihe 1: Luo ohjelma, joka osoittaa Posix Mutexin käytön C-ohjelmoinnilla Linux Mint 20: ssä

Ensinnäkin luomme .cpp-tiedosto Linux Mint 20 -järjestelmässämme. Menemme yksinkertaisesti kotikansioon, luomme tyhjän asiakirjan ja nimeämme sen Mutexiksi.cpp. Kerran meidän .cpp-tiedosto on luotu, avaamme sen tekstieditorilla. Sen jälkeen kirjoitamme alla olevissa kuvissa näkyvän koodin .cpp-tiedosto:

Kummassakin yllä olevassa kuvassa näkyvä koodi loi kaksi erilaista säiettä. Ensimmäinen ketju vastaa työtä # 1, kun taas toinen ketju vastaa työtä # 2. Sitten olemme luoneet esimerkkitoiminnon nimeltä "Mutex-toiminto". Tässä toiminnossa lukitsemme ensin Mutex-lukitusmuuttujan, ja se avataan vasta, kun säie 1 on valmis työn # 1. Vastaavasti Mutex-lukitusmuuttuja lukitaan jälleen kierteellä # 2, kunnes se viimeistelee työn # 2. Tätä "Mutex-toimintoa" kutsutaan "pää" -toiminnolla.

Vaihe 2: C-ohjelman kokoaminen Linux Mint 20: ssä

Tallentamisen jälkeen .cpp-tiedosto, käännämme sen nyt Linux Mint 20 -päätteen kautta seuraavalla komennolla:

$ gcc -o Mutex Mutex.cpp -lanka

Tässä "Mutex" viittaa "-o" -merkin jälkeen luodun objektitiedoston nimeen, kun taas "Mutex".cpp ”on alkuperäisen nimi .cpp-tiedosto. Lippu “-pthread” on välttämätön tämän ohjelman kokoamiseksi, koska tämä ohjelma kirjoitetaan käytettäessä ”pthread” -kirjastoa. Jos jätät tämän lipun pois, ohjelmaa ei käännetä ja se tekee joitain virheitä. Onnistunut kokoaminen meidän .cpp-tiedosto ei tuota viestejä päätelaitteessa, kuten alla olevassa kuvassa näkyy:

Vaihe 3: C-ohjelman suorittaminen Linux Mint 20: ssä

Kun "Mutex" -niminen objektitiedosto on luotu, voimme suorittaa sen seuraavalla komennolla:

$ ./ Mutex

Muteximme tuotoksessa.cpp-ohjelmassa huomaat, että ensimmäinen Job 1 on alkanut, mikä tarkoittaa, että ketju # 1 on hankkinut Mutex-lukituksen. Sen jälkeen Job 1 päättyy jonkin ajan kuluttua. Sitten Job 2 alkaa, mikä tarkoittaa, että lanka # 2 on hankkinut Mutex-lukon. Se avataan vasta, kun Job 2 on valmis.

Johtopäätös

Tämä artikkeli antoi perusteellisen selvityksen Posix Mutexin käytöstä C-ohjelmoinnilla Linux Mint 20: ssä. Mutexia voidaan käyttää erittäin tehokkaasti kilpailuolosuhteiden välttämiseksi ohjelmoinnin yhteydessä yksinkertaisesti sisällyttämällä Posix- tai pthread-kirjasto C-koodiin. Tämä ei ainoastaan ​​takaa tietojen johdonmukaisuutta, vaan myös parantaa käsittelyä.

Parasta Posix-kirjaston käytössä Linuxissa on, että meidän ei edes tarvitse asentaa mitään erikoistuneita ohjelmistoja, paketteja tai kääntäjiä sille. C-koodi voidaan yksinkertaisesti kirjoittaa mihin tahansa oletustekstieditoriin Linuxissa, ja se voidaan kääntää ja suorittaa oletusarvoisilla gcc- tai g ++-kääntäjillä. Tämä osoittautuu lisättynä helppokäyttöisyyteen Posix Mutexin ja C-ohjelmoinnin käytössä Linux Mint 20: ssä.

Hyödyllisiä työkaluja Linux-pelaajille
Jos haluat pelata pelejä Linuxissa, on todennäköistä, että olet käyttänyt sovelluksia ja apuohjelmia, kuten Wine, Lutris ja OBS Studio, pelikokemuksen...
HD Remastered Games for Linux that Never had a Linux Release Earlier
Many game developers and publishers are coming up with HD remaster of old games to extend the life of franchise, please fans requesting compatibility ...
Kuinka käyttää AutoKey-toimintoa Linux-pelien automatisointiin
AutoKey on työpöydän automaatioapuohjelma Linuxille ja X11: lle, ohjelmoitu Python 3, GTK ja Qt. Komentosarjojen ja MACRO-toimintojen avulla voit auto...