Size: a a a

2019 October 29

AN

Alexander Nozik in Kotlin Moscow
Ⓢⓔⓡⓖ
Своё название корутины получили по аналогии с subroutine (обычные функции в нашем понимании). Более корректное название - suspend-функции, как и ключевое слово в Котлине
Ильмир в докладе показывал статью, где в первый раз слово корутины появилось.
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Alexander Nozik
Ильмир в докладе показывал статью, где в первый раз слово корутины появилось.
Оно появилось в 70-х годах ещё до нашего рождения
источник

SM

Sergey Morgunov in Kotlin Moscow
Ⓢⓔⓡⓖ
Да пох
Да я не спорю 🙂 Почему бы лишний раз не обсудить. Просто я от вопроса в стопор немного вошёл. Не ожидал 🙂
источник

AN

Alexander Nozik in Kotlin Moscow
Ⓢⓔⓡⓖ
Оно появилось в 70-х годах ещё до нашего рождения
Как и весь остальной CS. Правда то, что сейчас корутины - это совсем не то, что тогда корутины
источник

IK

Ilya Kovalkov in Kotlin Moscow
Roman Ivanov
Что такое корутины?
Было забавно когда один спикер по теме golang начал рассказывать про горутины) У меня была похожая реакция) Что, нафиг?
источник

ЮН

Юрий Николаев in Kotlin Moscow
Roman Ivanov
Что такое корутины?
Имхо самое простое определение - легковесные треды, управляемые на уровне приложения
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Да не треды это. Лучше вообще их не упоминать чтобы народ не путать
источник

AN

Alexander Nozik in Kotlin Moscow
Юрий Николаев
Имхо самое простое определение - легковесные треды, управляемые на уровне приложения
Это неправильное определение
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
источник

RI

Roman Ivanov in Kotlin Moscow
Ⓢⓔⓡⓖ
Да не треды это. Лучше вообще их не упоминать чтобы народ не путать
Тогда вообще не понятно. Как я понял есть пул потоков, внутри которых выполняются только корутины.
источник

AN

Alexander Nozik in Kotlin Moscow
Roman Ivanov
Тогда вообще не понятно. Как я понял есть пул потоков, внутри которых выполняются только корутины.
Потоки - это потоки, корутины и корутины. Корутины могут использовать пул потоков, а могут и не использовать. Это разные вещи для разных вещей.
источник

RI

Roman Ivanov in Kotlin Moscow
Alexander Nozik
Потоки - это потоки, корутины и корутины. Корутины могут использовать пул потоков, а могут и не использовать. Это разные вещи для разных вещей.
Но в jvm же нет понятия такого. Это некая абстракция, которая построена поверх чего то
источник

AN

Alexander Nozik in Kotlin Moscow
Roman Ivanov
Но в jvm же нет понятия такого. Это некая абстракция, которая построена поверх чего то
Все есть абстракция поверх машинного кода. JVM потоки - это тоже абстракция. И мы не обязательно говорим про JVM
источник

RI

Roman Ivanov in Kotlin Moscow
Alexander Nozik
Все есть абстракция поверх машинного кода. JVM потоки - это тоже абстракция. И мы не обязательно говорим про JVM
Ну как же, есть нативный вызов на новый поток
источник

AN

Alexander Nozik in Kotlin Moscow
Roman Ivanov
Ну как же, есть нативный вызов на новый поток
Не обязатлельно совершенно. JVM треды к нативным тредам не прибиты жестко.
источник

ЮН

Юрий Николаев in Kotlin Moscow
Не кидайтесь тапками. Если абстрагироваться от понятия тредов и корутин, то мы имеет последовательность операций (слишком грубо называть потоком, согласен). Эта последовательность может быть прервана вызовом suspend функции (для вызова прерывания из функции она должна быть suspend). Естественно последовательность операций выполняется на потоке и получается что корутина - это слой абстракции над неким пулом (дефолтный размер = количеству 'ядер', доступных на машине). В момент прерывания этой последовательности происходит выггрузка стека корутины из потока и её сохранение в куче, после чего в поток загружается стек другой сопрограммы. Соответствующий байт-код генерируется компилятором Kotlin.
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Юрий Николаев
Не кидайтесь тапками. Если абстрагироваться от понятия тредов и корутин, то мы имеет последовательность операций (слишком грубо называть потоком, согласен). Эта последовательность может быть прервана вызовом suspend функции (для вызова прерывания из функции она должна быть suspend). Естественно последовательность операций выполняется на потоке и получается что корутина - это слой абстракции над неким пулом (дефолтный размер = количеству 'ядер', доступных на машине). В момент прерывания этой последовательности происходит выггрузка стека корутины из потока и её сохранение в куче, после чего в поток загружается стек другой сопрограммы. Соответствующий байт-код генерируется компилятором Kotlin.
Только стека нет, а роль стека выполяет стейт машина внутри объекта корутины и колбеки
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Хорошо описал
источник

RI

Roman Ivanov in Kotlin Moscow
Alexander Nozik
Не обязатлельно совершенно. JVM треды к нативным тредам не прибиты жестко.
Типа зависит от jvm? Как я понял в хостпоте у них 1 к 1. The basic threading model in Hotspot is a 1:1 mapping between Java threads (an instance of java.lang.Thread) and native operating system threads. The native thread is created when the Java thread is started, and is reclaimed once it terminates. The operating system is responsible for scheduling all threads and dispatching to any available CPU.
источник

AN

Alexander Nozik in Kotlin Moscow
Если я ничего не путаю, то когда начинался JVM, на линуксе тредов еще не было, были тольок процессы. Так что давайте не заниматься софистикой
источник