Полная версия этой страницы:
семафоры
Всем Д.В.
Прошу помочь разобраться с семафорами.
Я так понимаю, этот функционал предназначался для корректной работы event-скриптов.
Пытаюсь попробовать расширить использование семафоров, и применить их в разруливании работы event-скрипта и resident-скрипта.
Конкретная задача:
Есть event-скрипт. Когда он выполняется, нужно блокировать работу resident-скрипта.
Это в принципе возможно? Если да, прошу привести пример.
Спасибо.
EVIKA_News
28.1.2014, 20:15
Александр Привет.
Документ Руководство программиста.Semaphore library поможет ?
Видел, не помогает... пробую по аналогии, но не уверен что правильно делаю все )))
Там тоже только для event-скриптов все примеры.
Если я правильно понял, то можно в Event скрипте менять какую-либо глобальную переменную, а в resident её отслеживать (простое условие if в самом начале resident). Правда тут нужно смотреть время стартов скриптов...
missile, к сожалению вы не правы.
evika_news правильно дала ссылку на руководство программиста, там разобран пример. Неважно это событийный скрипт или резидентный, код одинаковый.
Этой конструкцией вы открываете семафор. Он глобален для всех скриптов
semaphore = sem.open('eventlock') эту функцию вызываете в обоих скриптах
конструкция
while not semaphore:trywait() do
sleep(0.1)
end
-- делаем чего-нибудь
отслеживает когда первый семафор закроется и можно продолжать выполнение скрипта, а до этого крутится в цикле while.
Более подробно прочитать о работе в многопоточных системах вы можете прочитать в любой специализированной литературе.
Ага, значит я правильно понял, что семафоры являются глобальными. А не только для event-скриптов.
спасибо за помощь.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.