Вопрос теоретического характера. Допустим, есть скрипт с управлением горячими клавишами, у которого есть период долгого сна (5 минут в примере), после которого он должен сделать какие-то действия. Понятно, что пользователь за время сна может снять скрипт с паузы. Я ставлю дополнительную проверку на то, что скрипт все еще в режиме паузы по окончанию сна. Вроде работает, но не совсем понимаю особенности взаимодействия параллельно запущенных обработчиков паузы.
На каком этапе спящий обработчик понимает, что глобальная переменная поменяла свое значение и требуется выйти из всех его циклов? Более того, за время его сна, скрипт может быть снят и поставлен на паузу пользователем заново. Однако спящий обработчик как-то это понимает и все равно завершает свое действие при снятии с паузы (что, конечно, замечательно, но мне не понятно как это происходит) :wacko:
На каком этапе спящий обработчик понимает, что глобальная переменная поменяла свое значение и требуется выйти из всех его циклов? Более того, за время его сна, скрипт может быть снят и поставлен на паузу пользователем заново. Однако спящий обработчик как-то это понимает и все равно завершает свое действие при снятии с паузы (что, конечно, замечательно, но мне не понятно как это происходит) :wacko:
Код:
Global $Paused = 0
HotKeySet('{PAUSE}', 'TogglePause')
HotKeySet('^q', 'Terminate')
While 1
Sleep(100)
WEnd
Func TogglePause()
$Paused = NOT $Paused
While $Paused
Sleep(300000)
If $Paused Then
;мои действия
EndIf
WEnd
EndFunc
Func Terminate()
Exit
EndFunc