Size: a a a

2018 November 22

AN

Alexander Nozik in Kotlin Moscow
Дедлок вполне возможен если исчерпывается пул. Но если нет циклических зависимостей, то его быть не должно
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Alexander Nozik
Есть. Как-нибудь не с мобилки напишу. Если циклов нет, то дедлоку взяться неоткуда
да, но утверждение "циклов нет" не следует из того, как таски делаются. так должно быть, но известно ведь, что оно всегда идёт не так как должно :)
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Oleg Pushkarev
В корутинах, как и в ForkJoinPool, дедлок невозможен. join() не блокирующий. Для вашего случая корутины идеально подходят
вопрос в том, что называть дедлоком. в данном случае имелся в виду бесконечный race без полезной работы
источник

MZ

Maxim Zinchenko in Kotlin Moscow
насчёт циклов - сейчас мы валим exception c указанием цепочки. вот как-то так и хотелось бы это видеть. а не так, что сервер просто бесконечно жжужит
источник

MZ

Maxim Zinchenko in Kotlin Moscow
ну и тут нужно уточнить, что формального описания графа зависимостей нет. таски просто запрашивают из контекста значения и ждут их расчёта. это делается в коде таска, а не каким-то инжектом на старте. в том числе из-за того, что таски не атомарны и часть работы отгружают раньше завершения. хотя с этим можно побороться и устранить такую вольность
источник

AN

Alexander Nozik in Kotlin Moscow
Я делаю формальный граф задачи и поиск циклов при загрузке задачи. В принципе поиск циклов можно делать на старте корутины, она же помнит своего "родителя", вот и проверить, есть ли в цепочке родителей она сама.
источник

AN

Alexander Nozik in Kotlin Moscow
Если есть сайд эффекты, тот тут, разумеется, не так все просто.
источник

MZ

Maxim Zinchenko in Kotlin Moscow
с формальным графом много сложностей. например, сложно сделать мутабельный набор задач. такое используется редко, но бывает (если расчёты связаны с действиями пользователя). не особо понятно как делать перерасчёт графа без жёсткой синхронизации на это время. у нас например кроме добавления нод бывают и удаления (вброшена более свежая задача, старую нет смысла считать)
источник

MZ

Maxim Zinchenko in Kotlin Moscow
для некоторых таких вещей мы используем drools, так как в нём как раз решены проблемы мутабельного формального графа. но с ним пока не удалось разобраться, как сделать красивый менеджмент контейнеров (мы не можем всегда всё хранить в памяти). жалко что у него ничего встроенного на эту тему нет.
источник

AN

Alexander Nozik in Kotlin Moscow
Ну у меня как раз граф гибкий. Пересчитывается при каждом запуске
источник

MZ

Maxim Zinchenko in Kotlin Moscow
под мутабельностью я имею в виду изменение списка задач после запуска. то есть контейнер работает, а ситуация меняется
источник

AN

Alexander Nozik in Kotlin Moscow
А, нет, это лучше не делать
источник

MZ

Maxim Zinchenko in Kotlin Moscow
а вообще drools это довольно тяжеловесная штука. все эти его приколы с мавен репозиториями в проде и сложность интеграции... слава богам есть embedded версия, с которой всё проще, но хотелось бы чего-то ещё более лёгкого
источник

MZ

Maxim Zinchenko in Kotlin Moscow
а если есть формальный граф, то в общем-то и корутины не нужны (если задачи чисто расчётные)
источник

AN

Alexander Nozik in Kotlin Moscow
У меня раньше все было на CompletableFuture, сейчас на корутины переделал. В принципе можно и без них, но с ними симпатичнее.
источник
2018 November 23

Q

QuAn in Kotlin Moscow
#puzzler. Тест на знание очередности операторов. Что напечатает эта простая программа на Kotlin?
val x: Int? = 2
val y: Int = 3
val sum = x ?: 0 + y
println(sum)


▪️ 12% (3) 3
🔸

▫️ 28% (7) 5
🔸🔸🔸

▪️ 60% (15) 2
🔸🔸🔸🔸🔸🔸🔸🔸

▫️ 0% 0

👥 25 - всего голосов
источник

Q

QuAn in Kotlin Moscow
#puzzler Что будет результатом компиляции и запуска?
val x: Int = null!!
println(x)


▪️ 4% (1) a) NullPointerException


▫️ 71% (15) b) KotlinNullPointerException
🔸🔸🔸🔸🔸🔸🔸🔸

▪️ 4% (1) с) скомпилируется с предупреждением


▫️ 19% (4) d) не скомпилируется
🔸🔸
👥 21 - всего голосов
источник
2018 November 26

AN

Alexander Nozik in Kotlin Moscow
QuAn
#puzzler. Тест на знание очередности операторов. Что напечатает эта простая программа на Kotlin?
val x: Int? = 2
val y: Int = 3
val sum = x ?: 0 + y
println(sum)


▪️ 12% (3) 3
🔸

▫️ 28% (7) 5
🔸🔸🔸

▪️ 60% (15) 2
🔸🔸🔸🔸🔸🔸🔸🔸

▫️ 0% 0

👥 25 - всего голосов
Интересный результат в смысле разделения голосов.
источник
2018 November 27

Ⓢⓔⓡⓖ in Kotlin Moscow
https://app.mindmup.com/map/_free/2018/11/f5fd6e70f23711e8a21b5b33bff9224e - нужно дополнить область Mobile. Кто поможет?
источник

II

Ivan Istomin in Kotlin Moscow
А что это за документ, что он описылает? Что-то типо Awesome list только по функциональности?
источник