Перейти к публикации
Форум - ComputerCraft
  • 0
SoNyG

Не ясность в простейшей программе (Too long without yielding).

Вопрос

При запуске цикл работает нормально 8 секунд потом сбрасывается с ошибкой:   test:3 Too long without yielding . Необходимо сделать данный цикл бесконечным.u6a7x3PM2Wk.thumb.jpg.5e1ab0d5c8d4b8a0d716159792263286.jpg

Надеюсь на вашу помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

Программы на OpenComputers должны иногда переключаться на всякие свои внутренние задачи.

Но пока твоя программа единовластно занимает поток выполнения - это невозможно. Отсюда ошибка "Too long without yielding" - то есть "Слишком долго без передачи управления".

 

Чтобы позволить системе компьютера заниматься своими делами, необходимо добавить либо event.pull, либо os.sleep.

Причем достаточно слипа на 0 секунд:

os.sleep(0);

Добавь это в любое место цикла - и проблема решится.

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
29 минут назад, Totoro сказал:

Программы на OpenComputers должны иногда переключаться на всякие свои внутренние задачи.

Но пока твоя программа единовластно занимает поток выполнения - это невозможно. Отсюда ошибка "Too long without yielding" - то есть "Слишком долго без передачи управления".

 

Чтобы позволить системе компьютера заниматься своими делами, необходимо добавить либо event.pull, либо os.sleep.

Причем достаточно слипа на 0 секунд:


os.sleep(0);

Добавь это в любое место цикла - и проблема решится.

Это ComputerCraft

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

В случае ComputerCraft причины примерно те же.

 

Можно тоже попробовать поиграть с os.sleep() с разной продолжительностью (ноль уже не поможет).

Можно попробовать использовать хак типа такого:

os.queueEvent("fakeEvent");
os.pullEvent();

Тоже внутри цикла.

 

Про ComputerCraft я знаю меньше, руководствуюсь гуглом, так что тут надо экспериментировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×