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

Вопрос

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

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

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

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


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

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

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

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

  • Нравится 2

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


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

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

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

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


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

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