Семафорные функции

Если несколько потоков скрипта CTRL выполняются параллельно, невозможно предсказать, как далеко поток был обработан в определенное время. Результат параллельной обработки может не зависеть от порядка следования инструкций между различными потоками. Иногда приложению, однако, требуется определенный порядок. Например, когда потоки должны быть защищены от одновременного доступа к общему ресурсу или когда поток должен обрабатываться только после выполнения определенного условия. Синхронизация описывает ограничение свободной параллельной обработки.

Примером семафора без вычислений может быть обед в ресторане. Семафор инициализируется количеством стульев в ресторане. Когда люди приходят, они хотят занять место. По мере заполнения мест, semAvailable() уменьшается. По мере того, как люди уходят, semAvailable() увеличивается, позволяя входить большему количеству людей. Если группа из 10 человек хочет занять места, но есть только 9 мест, эти 10 человек будут ждать, но группа из 4 человек будет занята (если увеличить количество свободных мест до 5, то группа из 10 человек будет ждать дольше).

При нажатии клавиши CTRL доступны следующие функции семафора:

semAcquire(),

semAvailable(),

semRelease()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *