Пределы сопрограмм? - PullRequest
       3

Пределы сопрограмм?

2 голосов
/ 14 января 2020

У меня есть несколько вопросов о сопрограммах: можно ли запускать большое количество сопрограмм параллельно с тяжелой работой?

Например, у меня есть список объектов и для каждого объекта, который я хочу выполнить тяжелую работу.

  • Могу ли я выполнить For l oop и запустить сопрограмму для каждого объекта за один раз?
  • Как Coroutine может выполнять большое количество работы параллельно?
  • Если памяти слишком мало, Coroutine будет ждать перед запуском другой Coroutine?
  • Лучше ограничить сопрограммы, например, с помощью newFixedThreadPoolContext?

Извините за количество вопросов, это довольно расплывчато для меня ...

Спасибо за ваши ответы, хорошего дня!

1 Ответ

1 голос
/ 14 января 2020

Можно ли запустить большое количество сопрограмм параллельно с тяжелой работой?

Да, можно. Coroutines действительно легкие. Фактически, многие примеры сопрограмм показывают, что вы можете запускать тысячи сопрограмм одновременно.

Могу ли я сделать For l oop и запустить сопрограмму для каждого объекта за один раз?

Да, вы можете. Хотя я не знаю, насколько это было бы эффективно.

Как Coroutine может обрабатывать большое количество параллельных заданий?

Подпрограммы имеют понятие Dispatchers, которое разрешить настройку потоков.

Если памяти слишком мало, Coroutine будет ждать перед запуском другой Coroutine?

Скорины ведут себя как легковесные Threads, поэтому управление памятью вам решать. Я не знаю о встроенном механизме, который препятствовал бы запуску сопрограммы, если системе не хватает памяти. Опять же, сопрограммы легкие, поэтому, если вы не можете запустить сопрограмму, возможно, что-то происходит не так.

Лучше ограничить сопрограммы, например, с помощью newFixedThreadPoolContext?

Используя newFixedThreadPoolContext, вы не ограничиваете количество сопрограмм, которые вы можете запустить. Вы просто вводите ограничение на ThreadPool, которое будет создано для запуска сопрограммы. Также из newFixedThreadPoolContext документов обратите внимание, что он будет заменен в будущем.

...