ПредишенСледващото

Използването на семафори

down_interruptible функция () се опитва да улови семафора. Ако този опит е неуспешен, тази работа се прехвърля в състояние на готовност TASK_INTERRUPTIBLE флаг. В глава 3 от материал трябва да се напомни, че това състояние на процеса означава, че работата може да се върне към изпълнението на сигнала, както и че такава възможност обикновено е много ценно. Ако сигналът идва в момент, когато работата е в очакване на освобождаването на семафора, работата се връща на изпълнението и down_interruptible () връща стойност -EINTR. Една алтернатива за разглеждане на функцията изпълнява надолу функция (). което се превежда на задачата в режим на готовност с TASK_UNINTERRUPTIBLE флаг. В повечето случаи това не е желателно, тъй като процеса, който е в очакване на освобождаването на семафора няма да реагира на сигналите. Затова down_interruptible функция () се използва много по-широко, отколкото (функцията надолу). Да, имената на тези функции са, разбира се, са далеч от идеалното.

функция down_trylock () се използва за улавяне на споменатия неблокираща семафор. Ако семафор е вече заключена, функцията веднага се връща ненулева стойност. Ако се окаже успешна, да се възползва от брава се връща нула и капан за заключване.

За да освободите капан семафор трябва да извикате функция (). Да разгледаме следния пример.

първоначалната брояч стойност равна на 1 * /

Необходимо е да се отиде в състояние свободно (стръмен), когато заловен блокиран

Трябва да използвате семафори

манекени

Състояние променливи (условна променлива, завършване на променливите) - просто средство за синхронизация между двете задачи, които работят в режим на ядрото, когато е необходимо, една до друга задача е изпратил сигнал, че е възникнало събитие. В същото време една задача чака на променливата състояние, докато друга работа не е да се направят някои работи. Когато друга задача приключи работата си, тя използва променливата на състоянието, за да се върне към изпълнението на всички в очакване на нейната работа. Ако това изглежда като семафор работа, това е начина, по който е, идеята е същата. В действителност, манекени просто осигуряват просто решение на проблема, за които в други ситуации, използвайте семафори. Например, в системата за повикване vfork () сляпо а се използва за връщане на изпълнението на процеса на родител, генерирани в края.

Състояние променливи са представени от завършването на структура структура. което е определено в файла .

Статично сляпо може да бъде създаден с макро

Динамично създаде условие променлива може да бъде инициализиран използване init_completion (функция).

Подкрепете проекта - споделете линка, благодаря!