C Програмиране

Posix Mutex с C програмиране

Posix Mutex с C програмиране
Днешната статия ще бъде фокусирана върху използването на Posix Mutex с програмиране на C в Linux Mint 20. Преди обаче да се насочим към нашия основен пример, първо бихме искали да изчистим няколко терминологии, така че лесно да разберете примерния сценарий, който ще споделяме с вас. В операционните системи понятието нишки се използва широко. Нишките са основно подпроцеси, които се делегират с различни задачи. Можете да разгледате следния пример, за да разберете работата на нишките.

Да предположим, че има основна нишка A, чиято задача е да изчисли сумата на променливите w и y, където w = x + 1 и y = z + 2. Стойностите на променливите x и z трябва да бъдат извлечени от потребителя. В този сценарий можем да създадем две нишки, B и C. Работата на нишка B ще бъде да вземе стойността на променливата x от потребителя, да я увеличи с 1 и да я запише в променливата w. Работата на нишка C ще бъде да вземе стойността на променливата z от потребителя, да я увеличи с 2 и след това да я запише в променлива y. И накрая, и двете нишки ще предадат тези резултати на основната нишка A, която след това ще изчисли тяхната сума и ще покаже крайния резултат.

Ако не бихме създали нишки в този сценарий, тогава всички задачи щяха да бъдат изпълнени от основната нишка A за много по-голямо време. По този начин нишките могат ефективно да извършват вашите изчисления без излишни закъснения. Съществува обаче много голяма загриженост при използването на нишки, което е известно като „състояние на състезанието“. Това е ситуация, при която две нишки се опитват да получат достъп и да модифицират същите данни, като по този начин ги оставят непоследователни. Като програмист, нашата цел трябва да бъде да избягваме състезателните условия по най-грациозния начин.

Най-често използваното решение за избягване на състезателни условия е използването на Mutex. Mutex означава взаимно изключване и основно ни предоставя заключващ механизъм, който предотвратява достъпа и модификацията на критичните данни от повече от един потребител наведнъж. По този начин се осигурява последователност на данните. Posix е основно библиотека, която ни представя различни вградени функции, които улесняват реализирането на нишки и Mutex. Със следния пример ще се опитаме да научим как се използва Posix Mutex с програмиране на C в Linux Mint 20.

Пример за използване на Posix Mutex с програмиране на C в Linux Mint 20

Ще извършим следните три стъпки, за да ви преведем през използването на Posix Mutex с програмиране на C в Linux Mint 20.

Стъпка # 1: Създаване на програма, демонстрираща използването на Posix Mutex с програмиране на C в Linux Mint 20

Преди всичко ще създадем .cpp файл в нашата Linux Mint 20 система. Ние просто ще отидем в нашата папка Home, ще създадем празен документ и ще го наречем Mutex.cpp. След като нашите .cpp файл е създаден, ние ще го отворим с текстовия редактор. След това ще въведем кода, показан на изображенията по-долу, в нашия .cpp файл:

Кодът, показан в двете изображения по-горе, създаде две различни нишки. Първата нишка съответства на задача №1, докато втората нишка съответства на задача №2. След това създадохме примерна функция, наречена „Mutex функция“. В тази функция първо заключваме променливата за заключване Mutex и тя ще бъде отключена само след като нишка # 1 завърши задача # 1. По същия начин променливата за заключване Mutex отново ще бъде заключена от нишка # 2, докато не завърши задача # 2. Тази „Mutex функция“ се извиква от функцията „main“.

Стъпка 2: Компилиране на програмата C в Linux Mint 20

След като запазите .cpp файл, сега ще го компилираме през терминала Linux Mint 20 със следната команда:

$ gcc -o Mutex Mutex.cpp -pthread

Тук „Mutex“, след флага „-o“, се отнася до името на обектния файл, който ще бъде създаден, докато „Mutex“.cpp ”е името на оригинала .cpp файл. Флагът “-pthread” е необходим за компилиране на тази програма, защото тази програма е написана, докато се използва библиотеката “pthread”. Ако пропуснете този флаг, вашата програма няма да бъде компилирана и ще покаже някои грешки. Успешната компилация на нашата .cpp файлът няма да създаде никакви съобщения на терминала, както е показано на изображението по-долу:

Стъпка # 3: Стартиране на програмата C в Linux Mint 20

След като обектният файл с име „Mutex“ е създаден, можем да го стартираме със следната команда:

$ ./ Мутекс

В изхода на нашия Mutex.cpp програма, ще забележите, че първата задача 1 е стартирала, което означава, че нишка # 1 е получила заключването Mutex. След това Job 1 завършва след известно време. След това стартира Job 2, което означава, че нишка # 2 е получила заключването Mutex. Той ще бъде отключен само след завършване на задача 2.

Заключение

Тази статия предоставя задълбочено обяснение на използването на Posix Mutex с програмиране на C в Linux Mint 20. Mutex може да се използва много ефективно, за да се избегнат състезателните условия по време на програмиране, като просто се включи библиотеката Posix или pthread в нашия C код. Това не само ще осигури последователност на данните, но и ще направи обработката много по-ефективна.

Най-доброто при използването на библиотеката Posix в Linux е, че дори не е необходимо да инсталираме специализиран софтуер, пакети или компилатор за нея. Кодът C може просто да бъде написан във всеки текстов редактор по подразбиране на Linux и може да бъде компилиран и стартиран с компилаторите по подразбиране gcc или g ++. Това се оказва допълнителен слой на лекота и удобство при използването на Posix Mutex с програмиране на C в Linux Mint 20.

Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...
Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...