Функция main()

Страницы: 1
RSS
Функция main(), почему в одном случае зависает в другом нет?
 
столкнулся вот с такой проблемой
может где то уже написано дайте ссылку?!
В чём разница? И на сколько надо тормозить, чтобы он из цикла нормально выходил
-- почему здесь программа не выходит из цикл
function OnInit()
STOP=true
end

function OnStop()
STOP=false; message("- Остановлено -",3)
end

function OnClose()
STOP=false; message("- Выход из QUIK -",3)
end

function OnAllTrade(alltrade)
end

function main()
while STOP==true do N=0; N=N+1 end
end

-- а здесь нормально?

function main()
while STOP==true do sleep(1000) end
end

--а если вот поменять с 1000 на 100, иногда нормально выходит из цикла, а иногда зависает в нём на долго  :\
-- если поставить sleep(1) не выходит из цикла?
Это нормально?
 
Цитата
Александр Иванов пишет:
Это нормально?
Да это нормально.
 
Поясните пожалуйста?
main() это отдельный поток.
Функция обратного вызова установила переменную STOP false а цикл не while не останавливается?
Если у меня будет маленькая программа внутри while, смогу ли я её корректно остановить. Без применения внутри цикла sleep.
Ещё один вопрос возможна ли такая запись sleep(0.001) и на сколько миллисекунд в этом случае будет останавливаться?
 
Цитата
Александр Иванов пишет:
Функция обратного вызова установила переменную STOP false а цикл не while не останавливается?
Обновите терминал QUIK до актуальной версии, на данный момент это 6.17
Цитата
Александр Иванов пишет:
Если у меня будет маленькая программа внутри while, смогу ли я её корректно остановить. Без применения внутри цикла sleep.
Да сможете.
Цитата
Александр Иванов пишет:
Ещё один вопрос возможна ли такая запись sleep(0.001) и на сколько миллисекунд в этом случае будет останавливаться?
sleep не умеет работать с дробными числами
Запись sleep(0.001) будет равна sleep(0)
Страницы: 1
Читают тему
Наверх