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

Вопрос

Хочу реализовать в своей программке "кое что". Мне нужно распараллелить энное число подобных инструкций id, msg = rednet.receive(). Как это сделать с помощью coroutine?

Я просто хочу научиться использовать coroutine. Сколько не втыкал в это, понять не могу, как оно работает.

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

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


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

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

  • 0

Если же ты хочешь просто разобраться с coroutine то это отдельная песня, мало связанная с параллельным выполнением.

Библиотека coroutine позволяет создавать т.н. сопрограммы. Это такие функции, допускающие вход не с начала, а с того места, на котором в прошлый раз сопрограмма прервала свое выполнение. Но на мой взгляд, без сопрограмм прекрасно можно обойтись имея библиотеку parallel.

  • Нравится 2

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


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

Сам по себе coroutine не сильно удобен для распараллеливания потоков. Распараллеливание проще всего реализовать при помощи библиотеки parallel. Просто оформляешь каждый поток в виде отдельной функции и вызываешь parallel.waitForAll или parallel.waitForAny.

Но, доложен сказать, что если каждый из потоков будет выполнять rednet.receive то смысла в распараллеливании особого нет. Ты просто получишь принятую по rednet строку в нескольких экземплярах. parallel полезен при ожидании совершенно разных событий, например, приема по rednet и ввода с клавиатуры через read()

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


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

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