Перейти к содержимому
  • 0
aloyen

Как асинхронно проверять сообщение на связанной карте OpenComputers?

Вопрос

У меня есть следующий код:

 

local component = require('component') 

local tunn = component.tunnel

local event = require('event') 

local robot = require('robot') 

 

function getMsg()

  return event.pull("modem_message")

 

while true do

  print(getMsg())

  robot.forward()

 

Мне нужно сделать так, чтобы в главном цикле получались сообщения из связанной карты, а затем выполняющий робот шел дальше. 

Но на деле происходит так: робот ждет сообщения, тупо стоя на одном месте. Он идет дальше только тогда, когда я отправляю сообщение.

Мне надо чтобы бот одновременно и шел и получал сообщения, не стопарясь, но при этом не запускалась куча процессов получения сообщения. Как такое реализовать? 

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


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

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

Самый простой способ - использовать event.pull(0, "modem_message"). Тогда, если сообщение ещё не пришло, будет возвращаться nil.

Есть возможность использовать event.listen, но с ним работать немного сложнее.

event.listen('modem_message', print)

while true do
  robot.forward()
  os.sleep(0)
end

 

Изменено пользователем ProgramCrafter

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


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

Ну на сколько мне известно, асинхронности в компах нету

 

В 30.05.2022 в 16:49, ProgramCrafter сказал:

Самый простой способ - использовать event.pull(0, "modem_message"). Тогда, если сообщение ещё не пришло, будет возвращаться nil.

Есть возможность использовать event.listen, но с ним работать немного сложнее.


event.listen('modem_message', print)

while true do
  robot.forward()
end

 

Ага, и всё это в одном потоке выполняется

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


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, num_pi сказал:

Ну на сколько мне известно, асинхронности в компах нету

...

Ага, и всё это в одном потоке выполняется

Скорее, наоборот, синхронности нет. В лучшем случае есть что-то близкое к ней.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...