Size: a a a

2020 November 26

АГ

Алексей Гладков... in Kotlin Native
Там можно и без Rx сделать я думаю) Rx в данном случае просто как переключатель потоков используется, ну и  нам удобно
источник

АГ

Алексей Гладков... in Kotlin Native
https://gist.github.com/AlexGladkov/06d0d6f8280f97c7bf4b915fa946a9a1
По итогам разговоров сделал gist, возможно кому-то будет полезно еще
источник

AI

Arkadii Ivanov in Kotlin Native
Alexey Pushkarev
Все привет. Ребят расскажите, я правильно понимаю что на ios корутины всегда в main thread будут работать? И запросы в сеть с помощью ktor не получится на background thread вынести?
Ктор сейчас использует корутины native-mt и без них не работает. А ещё он сам внутри переводит всё на нужный поток.
источник

AP

Alexey Pushkarev in Kotlin Native
Arkadii Ivanov
Ктор сейчас использует корутины native-mt и без них не работает. А ещё он сам внутри переводит всё на нужный поток.
А чем версия mt отличается от обычной? И как он внутри это делает?
источник

AI

Arkadii Ivanov in Kotlin Native
Alexey Pushkarev
А чем версия mt отличается от обычной? И как он внутри это делает?
Это отдельная ветка, там типа есть какая-то многопоточность. Как ктор делает точно не знаю. На иос например NSUrlSession уже асинхронный, с коллбеком.
источник

AP

Alexey Pushkarev in Kotlin Native
Arkadii Ivanov
Это отдельная ветка, там типа есть какая-то многопоточность. Как ктор делает точно не знаю. На иос например NSUrlSession уже асинхронный, с коллбеком.
Интересно как там сделана многопоточность в mt))) То есть если мне на ios корутины нужны только чтобы ktorом в сеть ходить не в main thread, то оно уже в ktor работает из коробки с mt версией корутин?))
источник

AI

Arkadii Ivanov in Kotlin Native
Alexey Pushkarev
Интересно как там сделана многопоточность в mt))) То есть если мне на ios корутины нужны только чтобы ktorом в сеть ходить не в main thread, то оно уже в ktor работает из коробки с mt версией корутин?))
В ктор можно ходить на главном потоке. Он сам переключает на фоновый.
источник

АГ

Алексей Гладков... in Kotlin Native
Arkadii Ivanov
В ктор можно ходить на главном потоке. Он сам переключает на фоновый.
Вот у нас почему-то такой подход вызвал фриз всего приложения
источник

AI

Arkadii Ivanov in Kotlin Native
Вообще в корутинах (да и в RX) рекомендация такая, что переключение потоков задача вызываемого, а не вызывающего.
источник

AI

Arkadii Ivanov in Kotlin Native
Алексей Гладков
Вот у нас почему-то такой подход вызвал фриз всего приложения
Подозреваю баг нативных корутин. Они там плохо работают. Иногда machinery попадает. И другие прелести. Лично я держусь от корутин подальше.
источник

AP

Alexey Pushkarev in Kotlin Native
Arkadii Ivanov
Вообще в корутинах (да и в RX) рекомендация такая, что переключение потоков задача вызываемого, а не вызывающего.
Хм, не знал. Откуда такая рекомендация?
источник

АГ

Алексей Гладков... in Kotlin Native
Arkadii Ivanov
Подозреваю баг нативных корутин. Они там плохо работают. Иногда machinery попадает. И другие прелести. Лично я держусь от корутин подальше.
Да, мы так и подумали, поэтому завернули в Rx и все норм пошло ) Хотя, конечно, это странно, но ждем пока баг подправят
источник

AI

Arkadii Ivanov in Kotlin Native
Alexey Pushkarev
Хм, не знал. Откуда такая рекомендация?
Даже не знаю, это во многих докладах было. И вообще это очень логично. Вызываемый код сам лучше знает что на каких потоках делать. В корутинах в вызываемой функции может быть withContext, тогда переключение из вызывающего кода не имеет эффекта.
источник

AI

Arkadii Ivanov in Kotlin Native
Алексей Гладков
Да, мы так и подумали, поэтому завернули в Rx и все норм пошло ) Хотя, конечно, это странно, но ждем пока баг подправят
High five)
источник

АГ

Алексей Гладков... in Kotlin Native
Arkadii Ivanov
Даже не знаю, это во многих докладах было. И вообще это очень логично. Вызываемый код сам лучше знает что на каких потоках делать. В корутинах в вызываемой функции может быть withContext, тогда переключение из вызывающего кода не имеет эффекта.
Вот хз, мне всегда этот подход не нравился. Я люблю, когда код работает explicit, а не сиди гадай переключается оно там или не переключается)
источник

AI

Arkadii Ivanov in Kotlin Native
Алексей Гладков
Вот хз, мне всегда этот подход не нравился. Я люблю, когда код работает explicit, а не сиди гадай переключается оно там или не переключается)
Ну вот получается спорно, тоже вижу иногда такое использование. Но имхо это правильно. Например если в Йос используется NSUrlSession, то там не надо вообще переключать ничего. А в андроид надо IO
источник

AP

Alexey Pushkarev in Kotlin Native
Arkadii Ivanov
Даже не знаю, это во многих докладах было. И вообще это очень логично. Вызываемый код сам лучше знает что на каких потоках делать. В корутинах в вызываемой функции может быть withContext, тогда переключение из вызывающего кода не имеет эффекта.
Ну в целом да, логично. Старался так и делать всегда, то есть там где subscribe там и subscribeon/observeon в rx. Да и в корутинах тоже, обычно suspend fun, а где вызываешь там уже диспетчеры.
источник

AI

Arkadii Ivanov in Kotlin Native
Alexey Pushkarev
Ну в целом да, логично. Старался так и делать всегда, то есть там где subscribe там и subscribeon/observeon в rx. Да и в корутинах тоже, обычно suspend fun, а где вызываешь там уже диспетчеры.
Вроде я как раз наоборот говорю
источник

АГ

Алексей Гладков... in Kotlin Native
Просто получается надо знать как устроен NSURLSession (понимаю, что пример так себе), чтобы понять как этим пользоваться)
источник

АГ

Алексей Гладков... in Kotlin Native
Ну то есть ты должен понимать фреймворк прям до глубины, чтоб знать, что здесь все ок можно не переключать поток
источник