Как я могу создать однопотоковый контекст сопрограммы в Common pool в Kotlin? - PullRequest
0 голосов
/ 15 мая 2018

Краткое требование: иметь возможность создавать контекст коротина, который будет выполняться только в одном потоке (например, без параллелизма).

Дополнительное требование: для этих целей лучше использовать существующий CommonPool (например, пул потоков).tasks

На самом деле сопрограммы kotlin имеют метод newSingleThreadContext, который создаст отдельный поток и запланирует в нем все задачи.Однако это выделенный поток, поэтому ~ 1000 таких контекстов потребуют много ресурсов.

Поэтому я хотел бы иметь контекст со следующими характеристиками:

  • Максимум одинзадача может быть выполнена одновременно
  • Этот контекст должен повторно использовать любой другой (например, родительский контекст).Например, контекст не должен содержать никаких дополнительных потоков

1 Ответ

0 голосов
/ 31 августа 2018

Я обнаружил, что не существует простого решения для создания такого контекста.

Существует открытая проблема на githuib - https://github.com/Kotlin/kotlinx.coroutines/issues/261

Я думаю, что обновлю этот вопрос, тогда я найдуправильное решение.

...