C programozás

Posix Mutex C programozással

Posix Mutex C programozással
A mai cikk a Posix Mutex és C programozás használatára összpontosít a Linux Mint 20-ban. Mielőtt azonban a fő példánkra térnénk ki, először szeretnénk tisztázni néhány terminológiát, így könnyen megértheti azt a példapéldát, amelyet megosztunk Önnel. Az operációs rendszerekben a menetek fogalmát széles körben használják. A szálak alapvetően részfolyamatok, amelyeket különböző feladatokkal delegálnak. A következő példa figyelembe veheti a szálak működésének megértését.

Tegyük fel, hogy van egy A fő szál, amelynek feladata a w és y változók összegének kiszámítása, ahol w = x + 1 és y = z + 2. Az x és z változók értékeit a felhasználónak be kell töltenie. Ebben a forgatókönyvben két szálat hozhatunk létre, B és C. A B szál feladata az lesz, hogy elvegye a felhasználóból az x változó értékét, 1-gyel növelje és elmentse a w változóba. A C szál feladata az lesz, hogy elvegye a z változó értékét a felhasználótól, növelje 2-vel, majd elmentse az y változóba. Végül mindkét szál átadja ezeket az eredményeket az A fő szálnak, amely ekkor kiszámítja az összegüket és megjeleníti a végeredményt.

Ha ebben a forgatókönyvben nem hoztunk volna létre egyetlen szálat sem, akkor az összes feladatot sokkal nagyobb idő alatt hajtotta volna végre az A fő szál. Ily módon a szálak hatékonyan elvégezhetik a számításokat felesleges késedelem nélkül. A szálak használatával azonban nagyon komoly aggodalom merül fel, amely „versenyfeltételként” ismert. Ez egy olyan helyzet, amikor két szál megpróbálja ugyanahhoz az adathoz hozzáférni és módosítani őket, következetlenül hagyva azokat. Programozóként célunk az kell legyen, hogy a lehető legkecsesebben elkerüljük a versenykörülményeket.

A versenykörülmények elkerülésére leggyakrabban alkalmazott megoldás a Mutex használata. A Mutex a kölcsönös kizárást jelenti, és alapvetően egy olyan zárszerkezetet biztosít számunkra, amely megakadályozza, hogy egyszerre több felhasználó férjen hozzá és módosítsa a kritikus adatokat. Ily módon biztosított az adatok konzisztenciája. A Posix alapvetően egy olyan könyvtár, amely különböző beépített funkciókat mutat be nekünk, amelyek sokkal könnyebbé teszik a szálak és a Mutex megvalósítását. A következő példával megpróbáljuk megtanulni a Posix Mutex használatát C programozással a Linux Mint 20-ban.

Példa a Posix Mutex és C programozás használatára a Linux Mint 20-ban

A következő három lépést fogjuk végigvinni a Posix Mutex C programozással Linux Mint 20-ban.

1. lépés: A Posix Mutex és a C programozás használatát bemutató program létrehozása a Linux Mint 20 alkalmazásban

Először létrehozunk egy .cpp fájl a Linux Mint 20 rendszerünkön. Egyszerűen megyünk a Home mappánkba, létrehozunk egy üres dokumentumot és megnevezzük Mutex-nek.cpp. Egyszer a mi .A cpp fájl létrejön, a szövegszerkesztővel megnyitjuk. Ezt követően beírjuk az alábbi képeken látható kódot .cpp fájl:

A fenti két képen látható kód két különböző szálat hozott létre. Az első szál megfelel az 1. feladatnak, míg a második szál a 2. feladatnak felel meg. Ezután létrehoztunk egy „Mutex Function” nevű függvényt. Ebben a funkcióban először lezárjuk a Mutex lock változót, és csak akkor oldjuk fel, ha az 1. szál befejezi az 1. feladatot. Hasonlóképpen, a Mutex lock változót ismét a 2. szál rögzíti, amíg be nem fejezi a 2. feladatot. Ezt a „Mutex funkciót” a „main” függvény hívja meg.

2. lépés: A C program fordítása Linux Mint 20-ban

A. Mentése után .cpp fájlt, a Linux Mint 20 terminálon keresztül fordítjuk le a következő paranccsal:

$ gcc -o Mutex Mutex.cpp -pszál

Itt a „Mutex” az „-o” jelző után a létrehozandó objektum fájl nevére utal, míg a „Mutex”.cpp ”az eredeti neve .cpp fájl. A program összeállításához a „-pthread” jelző szükséges, mivel a program a „pthread” könyvtár használata közben íródik. Ha ezt a jelzőt kihagyja, a program nem kerül lefordításra, és hibákat okoz. A sikeres összeállítása .A cpp fájl nem hoz létre üzeneteket a terminálon, amint az az alábbi képen látható:

3. lépés: A C program futtatása Linux Mint 20-ban

Miután létrehozta a „Mutex” nevű objektumfájlt, a következő paranccsal futtathatjuk:

$ ./ Mutex

Mutexünk kimenetében.cpp programot, észreveszi, hogy az első Job elindult, ami azt jelenti, hogy az 1. szál megszerezte a Mutex zárat. Ezt követően az 1. Jób idő után befejeződik. Ezután elindul a Job 2, ami azt jelenti, hogy a 2. szál megszerezte a Mutex zárat. Csak akkor oldódik fel, ha a Job 2 befejezi.

Következtetés

Ez a cikk részletesen bemutatta a Posix Mutex és C programozás használatát a Linux Mint 20-ban. A Mutex nagyon hatékonyan használható a versenyfeltételek elkerülésére a programozás során, egyszerűen a Posix vagy a pthread könyvtárat beillesztve a C kódba. Ez nemcsak az adatok konzisztenciáját biztosítja, hanem a feldolgozást is sokkal hatékonyabbá teszi.

A Posix könyvtár Linuxos használatában az a legjobb, hogy nem is kell hozzá speciális szoftvert, csomagot vagy fordítót telepítenünk. A C kód egyszerűen beírható a Linux bármely alapértelmezett szövegszerkesztőjébe, és lefordítható és futtatható az alapértelmezett gcc vagy g ++ fordítókkal. Ez a könnyebb és kényelmesebb rétegnek bizonyul a Posix Mutex C programozásával a Linux Mint 20 alkalmazásban.

Ezekkel az ingyenes eszközökkel adja hozzá az egérmozdulatokat a Windows 10 rendszerhez
Az elmúlt években a számítógépek és az operációs rendszerek nagymértékben fejlődtek. Volt idő, amikor a felhasználóknak parancsokkal kellett navigálni...
Az egér mozgásának vezérlése és kezelése több monitor között a Windows 10 rendszerben
Dual Display Mouse Manager lehetővé teszi az egér mozgásának vezérlését és konfigurálását több monitor között, lassítva annak mozgását a határ közeléb...
A WinMouse segítségével testre szabhatja és javíthatja az egérmutató mozgását a Windows PC-n
Ha szeretné javítani az egérmutató alapértelmezett funkcióit, használjon ingyenes programokat WinMouse. További funkciókat kínál, amelyek segítenek ab...