Сопрограммы Dispatchers.IO
контекст ограничен 64 потоками. Этого недостаточно для надежного взаимодействия с блокирующим кодом в высококонкурентной системе.
В документации указано , что:
Дополнительные потоки в этом пуле созданы и отключеныпо запросу, по требованию. Количество потоков, используемых этим диспетчером, ограничено значением системного свойства «kotlinx.coroutines.io.parallelism» (IO_PARALLELISM_PROPERTY_NAME). По умолчанию используется ограничение в 64 потока или количество ядер (в зависимости от того, какое из них больше).
Я хочу изменить системное свойство kotlinx.coroutines.io.parallelism
на другое. Однако, если я просто сделаю это:
adb shell "setprop kotlinx.coroutines.io.parallelism 1000"
, я получу следующий результат:
setprop: failed to set property 'kotlinx.coroutines.io.parallelism' to '1000'
Кроме того, если я хочу отправить свое приложение, мне нужно будет изменитьэто свойство на устройствах пользователей, не так ли? В противном случае приложение не будет работать. Однако, даже если предположить, что это возможно, насколько я понимаю, все приложения, которые изменяют это свойство, будут переопределять настройки друг для друга. Это не похоже на надежный режим работы.
Итак, у меня есть три вопроса в этом контексте:
- Является ли свойство, подразумеваемое в документации, действительно "системным свойством"что я пытался изменить?
- Как изменить это свойство на устройстве без прав доступа для всех пользователей моего приложения?
- Есть ли лучшая альтернатива?
PSЯ знаю, что если бы я использовал только сопрограммы, без блокировки кода, это не было бы проблемой (вероятно). Но давайте просто предположим, что мне нужно использовать блокирующие вызовы (например, устаревший код Java).