Автор Тема: Снятие с паузы запускает все потоки  (Прочитано 1654 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Sabin

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
Ожидал, что пауза запоминает состояние всех потоков и потом при продолжении запускает только те, что работали.
Простой скрипт в 3 потока:
Цитировать
#name ("глюк паузы")
print("Поставь меня на паузу")
wait(10)
print("Спасибо за внимание")
halt // for single run
thread(stop_here,0)
print("Я не должен был быть запущен")
wait(1)
end_thread
thread(normal_way,1)
print("Это основная программа")
wait(3)
end_thread

Если его просто запустить - всё нормально:
Цитировать
20:44:16 Поставь меня на паузу
20:44:16 Это основная программа
20:44:19 Это основная программа
20:44:22 Это основная программа
20:44:25 Это основная программа
20:44:26 Спасибо за внимание

Но стоит поставить паузу нажав кнопку в основном окне, редакторе или комбинацией Alt+A, как пробуждается древнее зло:
Цитировать
20:45:55 Поставь меня на паузу
20:45:55 Это основная программа
20:45:57 Я не должен был быть запущен
20:45:58 Я не должен был быть запущен
20:45:58 Это основная программа
20:45:59 Я не должен был быть запущен
20:46:00 Я не должен был быть запущен
20:46:01 Я не должен был быть запущен
20:46:01 Это основная программа
20:46:02 Я не должен был быть запущен
20:46:03 Я не должен был быть запущен
20:46:04 Я не должен был быть запущен
20:46:04 Это основная программа
20:46:05 Я не должен был быть запущен
20:46:05 Спасибо за внимание
« Последнее редактирование: Июнь 07, 2015, 09:09:29 pm от Sabin »

alexenin

  • Зашел в гости
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Снятие с паузы запускает все потоки
« Ответ #1 : Март 07, 2016, 03:12:49 am »
хорошая тема, тоже думал над этим.

Можно ли в программе сделать вызов определенных функций при нажатии на паузу и на продолжение.
Это очень актуально с потоками.

Допустим

SUB(_event_pause)
SUB(_event_next)

Тогда можно будет сохранить текущее состояние потоков, а потом перед продолжением проверить игровые события

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3610
  • Котэ
    • Просмотр профиля
Re: Снятие с паузы запускает все потоки
« Ответ #2 : Март 07, 2016, 07:21:43 am »
Это уже исправлено в 4.12b
http://crapware.aidf.org/forum/index.php?topic=356.msg14992#msg14992
Кстати потоки теперь можно пере запускать.

Вот полная сборка, она пока тестируется, некоторые новые функции не работают корректно.
https://yadi.sk/d/rQnhKmxYprJcP
« Последнее редактирование: Март 07, 2016, 07:23:42 am от Oraven »

alexenin

  • Зашел в гости
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Снятие с паузы запускает все потоки
« Ответ #3 : Март 10, 2016, 04:29:10 pm »
да, все работает как надо.
спасибо