@kotlin_lang

Страница 658 из 982
Алексей
02.05.2018
15:02:49
Да, именно так
Интересненько, спасибо

Машков
02.05.2018
15:04:18
Если вызывается не-suspend функция, то внутри такой обычной функции всегда можно тспользовать, так как засыпание в ней не может произойти никогда

Vladimir
02.05.2018
15:06:05
То есть корутина может уснуть в одном потоке, а проснуться в другом
Зависит от контекста, но в общем случае и в CommonPool - да, может. Поэтому с блокировками и ThreadLocal лучше быть аккуратнее.

Машков
02.05.2018
15:07:49
Все примитивы AtomicXxx модно использовать как обычно

Google
Машков
02.05.2018
15:08:15
А также их производные

Алексей
02.05.2018
15:08:20
В любом случае, очень многое прояснилось

Спасибо огромное

Quantum Harmonizer
02.05.2018
15:27:19
Кто что делает со слепостью JaCoCo к инлайновым функциям? Или проще забить?)

Машков
02.05.2018
15:48:29
Встроенный в идею кавередж работает более менее правильно с инлайн-функциями

За исключением некоторых нюансов

Как починить jacoco неизвестно: не уверен, разбирплся ли кто-то с этим

Quantum Harmonizer
02.05.2018
15:52:10
можно на Travis запускать IDEA Coverage? :) Так-то всё в нём хорошо...

Никита?❄️
02.05.2018
16:10:35
Стандартная синхронизация с блокировками не то чтобы не работает, но это лучше никогда не использовать (т.к. блокировки потоков). Есть свои мьютексы - https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md#mutexes Можно навелосипедить, если чего-то не хватает в этом плане.
тут хуже может быть: если у тебя пул для корутин состоит из 8 потоков, и все 8 потоков ты заблочишь обычными средствами блокировки (хоть Thread.sleep) то у тебя из этого пула корутины в принципе выполняться не будут

пипл, есть вопрос: я взял рекомендованный выше ktor и внутри корутины его запускаю. во всех тестах, как бы не конфигурировал ktor, получаю 1000 запросов в секунду. ровно. в чём может быть проблема? сейчас скину код.







Google
Никита?❄️
02.05.2018
17:56:55


Mi
02.05.2018
17:58:04
Так а пул случаем не размером 1000?

Никита?❄️
02.05.2018
17:58:27
Так а пул случаем не размером 1000?
пул не редактировал, он стандартный

и не 1000, а 100 выходит

Так а пул случаем не размером 1000?
а не шаришь где его отредачить можно?

а, не пул корутин надо редачить. endpoint.apply { maxConnectionsPerRoute = 1000 }

Bogdan
02.05.2018
18:32:28
странный ктор, на спринг ужасно похожий

Никита?❄️
02.05.2018
18:33:01
странный ктор, на спринг ужасно похожий
не, то метод, к которому стучусь

ну, типа, не задержки же сети смотреть, а чисто чекать производительность фреймворка

от ктора мне нужен только http-клиент

Quantum Harmonizer
02.05.2018
19:42:20
жесть какая-то

Никита?❄️
02.05.2018
19:42:43
жесть какая-то
Зато быстро написано

Quantum Harmonizer
02.05.2018
19:43:00
Зато быстро написано
зато результаты странные, возьми JMH

Ivan
02.05.2018
20:48:17
ktor.io же Только он не совсем стабилен
Почему не стабильный? Вроде вместе с корутинами обещали уже зарелизить

Никита?❄️
02.05.2018
20:49:58
Quantum Harmonizer
02.05.2018
20:51:01
ну корутины ещё не в релизе же
это не отменяет того, что они отлично работают в продакшене

Ivan
02.05.2018
21:00:49
ну корутины ещё не в релизе же
Падажжи, то что они ещё в экспериментал - это ещё не значит что они не продакшен реди

Никита?❄️
02.05.2018
21:01:17
ну я корутины месяца 3-4 как юзаю

и мне норм

Google
Никита?❄️
02.05.2018
21:01:41
хотя вот есть фичи, которых не хватает

Ivan
02.05.2018
21:03:13
хотя вот есть фичи, которых не хватает
Каких фич в корутинах может не хватать? Если корутина - это и есть фича )

Никита?❄️
02.05.2018
21:04:14
Каких фич в корутинах может не хватать? Если корутина - это и есть фича )
ну например, что бы все средства синхронизации джавы работали как корутиновские

типа, вместо delay(150) можно было юзнуть Thread.sleep(150)

удобно было бы

Никита?❄️
02.05.2018
21:04:47
не пришлось бы менять код

Омг, это как? О_о
допил компилятора, я думаю

или ещё что

Ivan
02.05.2018
21:05:12
допил компилятора, я думаю
Ну это как минимум )

Никита?❄️
02.05.2018
21:05:31
ну, пока они не в продакшене, такое можно замутить

Ivan
02.05.2018
21:05:40
Но тогда же ещё все функции должны быть саспенд

Ivan
02.05.2018
21:06:21
Нельзя же саспенд функцию вызвать не из саспенд функции

Ну и это меняет семантику же

Всё-таки тред != корутина

Тредлокалы там всякие

Короче какая-то слишком крутая идея, мир, как мне кажется, к такому не готов )

Andrey
02.05.2018
21:14:38
или ещё что
Все уже украдено за нас. Корутины будут в Яве и при этом саспендиться будет безовсяких дополнительных конструкций. В алибабе уже работает это. http://openjdk.java.net/projects/loom/

Google
Andrey
03.05.2018
07:57:16
В смысле там даже suspend не надо будет писать, можно любую функцию засаспендить?
Могу только сказать как это работает для Алибабы (то как я это понял из доклада) Просто обычный код Java, но кажется в любом месте, он может засуспендиться и потом когда-то продолжить выполнение. У них это все сделано, ради экономии переключения контекстов на процессоре между потоками. Этот доклад у них был на JPointe, но они его потом отдельно представляли и я там его видел.

by involving in Adopt-aJSR activities and by directly participating in current OpenJDK project, we commit to contribute to newly launched OpenJDK project loom, actually our customized OpenJDK version already implemented some similar mechanism proposed by project loom.

https://www.youtube.com/watch?v=fpyub8fbrVE

На 9-й минуте он говорит, что вот код старый... но с файберми он становиться резко масштабируемым. И вот после этого я смотрю на JavaScript с его async\await и понимаю, что в яве сделают круче! :)

Igor
03.05.2018
08:05:34
> сделают Ну может наши внуки норм покодят) (а на android правнуки)

Admin
ERROR: S client not available

Egor
03.05.2018
08:22:00
Только хотел сказать, что на Андроиде итак котлин, как вдруг увидел название чата

Andrew
03.05.2018
08:23:54
> сделают Ну может наши внуки норм покодят) (а на android правнуки)
Пока похоже, что правнуки будут на Дарте писать. Если, конечно, кто-нибудь не завезёт новый бекенд для котлина.

Andrew
03.05.2018
08:26:13
так Native же
Я вот глянул с утра страничку об интеропе дарта с сями, а там написано, что инфа устарела, а ссылки на актуальную добавить постеснялись.

Andrey
03.05.2018
09:36:50
Они там не квазар случайно используют?
Название точно не помню. Они взяли какую-то университетскую разработку и занесли ее себе. Почему-то запомнил название loom, возможно в ее основе она же и лежит. Т.е. они не сами все написали.

Boris
03.05.2018
09:41:15
квазар кстати не любой код умеет трансформировать, у него много ограничений, вероятно полностью автоматически перейти на модель корутин с потоков не выйдет и не уверен что это когда-то попадет в релиз джавы

Ivan
03.05.2018
10:44:05
Пажжите, корутины и грин потоки - это же разные вещи. У грин потоков свой шедулер же должен быть

В смысле в котрутинах там просто свитч, а тут какая-то более сильная магия и на уровне рантайма

Или я путаю?

dimiii
03.05.2018
10:46:39
Пажжите, корутины и грин потоки - это же разные вещи. У грин потоков свой шедулер же должен быть
Нет, насколько понимаю - и там и там кооперативная многозадачность, в обоих случаях возможно форсированное переключение контекста (io операции, возврат из функции - первое что в голову приходит)

Ivan
03.05.2018
10:46:42
Все уже украдено за нас. Корутины будут в Яве и при этом саспендиться будет безовсяких дополнительных конструкций. В алибабе уже работает это. http://openjdk.java.net/projects/loom/
Но вообще - этопять, в джаве изначально были грин потоки, потом их замапили на системные, теперь снова здарова =)

Нет, насколько понимаю - и там и там кооперативная многозадачность, в обоих случаях возможно форсированное переключение контекста (io операции, возврат из функции - первое что в голову приходит)
В корутинах переключить контекст можно только на саспенд поинте, тот самый асинк io и другие саспенд функции, но если у вас бесконечный цикл который складывает даблы, то фиг его кто остановит

Google
Egor
03.05.2018
11:23:00
а есть таки ktor-юзеры в треде? Подскажет кто, как легко вытащить из call тело запроса? Оно у меня там в джсоне, я его и сам бы спарсил, но не вижу, где в скудной документации ктора про это написано

а-ля, embeddedServer(Netty, 8080) { routing { post ("/") { call... //Вот здесь хочу вытащить body } } }.start(true)

Like
03.05.2018
11:28:01
там же есть вроде .receive<T>

Egor
03.05.2018
11:35:43
Ага, увидел, спасибо @zdrastepoka

Какая-то неочевидная функция

ZUK
03.05.2018
12:03:59
всем привет, прошу прощения, но я новенький в котлине)) раньше писал под дроид на яве. есть интересные книги или другие источники обучения котлину?)

ZUK
03.05.2018
12:05:08
и на счет интеграции явы с котлином. могу ли я в котлин проекте использовать либу на яве?

ZUK
03.05.2018
12:05:24
супер

ZUK
03.05.2018
12:05:34
Руслан
03.05.2018
14:42:13
Никто либу не знает чтобы ей скормить class (type), а на выходе получить схему иеархии. Т.е. на вход: class A(val b: String) getDefinition(A::class) На выходе: obj: { fields: { b: string } }

Quantum Harmonizer
03.05.2018
14:43:44
java.lang.reflect?

или UAST

Руслан
03.05.2018
14:46:35
java.lang.reflect?
ну да. но java.lang.reflect мне кажется далеко не все сохраняет (return types/generics?) так что для котлина солюшен нужен. не уверен что все будет работать из коробки. Хочу сделать автоматические формочки для веба. Типо на беке говоришь что вот эта формочка будет иметь такую схему, а на фронте js'ом генерю форму по описанию класса.

Страница 658 из 982