nvkv
nvkv
Это же шикарно!
🏳️ Phil
А что ты не понял?
собственно ничего
nvkv
в 10 вручную. это правильно
Филип, я вот от природы туповат. Я могу в 9 местах поправить, а в 10 забыть
nvkv
я хочу, чтобы конфлютор за меня думал в таких ситуациях
Valery
Когда писал upspin всю ночь, а надо еще нарисовать талисман
nvkv
Когда писал upspin всю ночь, а надо еще нарисовать талисман
по-моему это внебрачный сын гленды и страуса
Roman
собственно ничего
Что такое гороутина?
Roman
Вопрос вообще ко всем :)
Ivan
Что такое гороутина?
https://tour.golang.org/concurrency/1
Roman
кстати, говоря про Upspin, я правильно понял что это облегчает peer-to-peer file sharing?
nvkv
Что такое гороутина?
это запакованный кусок компьютейшена, со стэком, который может выполниться
nvkv
amirite?
nvkv
причем там какой-то хитрый шедулинг на реальные треды
nvkv
и какой-то хитрый шедулер в рамках трэда, который эти самые компьютейшены шатает
Roman
https://tour.golang.org/concurrency/1
Спасибо, Кэп. А с точки зрения операционной системы? Как именно эта сущность представлена?
nvkv
в рамках текущего трэда, подозреваю, что копированием
nvkv
честно, не знаю деталей реализации
Roman
https://tour.golang.org/concurrency/1
Если я захочу гороутину сереализовать и передать через сокет?
Roman
http://blog.nindalf.com/how-goroutines-work/
nvkv
Если я захочу гороутину сереализовать и передать через сокет?
кстати в моей картине мира тебе ничего не помешает это сделать
nvkv
это же просто кусок байт за интерфейсом
nvkv
это зачем?
Чтобы посчитать твой компьютейшн на еба-кластере вместо контрольной ноды
nvkv
Скалабилити, все вот это
Roman
Чтобы посчитать твой компьютейшн на еба-кластере вместо контрольной ноды
зачем рутину то сериализировать? сериализируй кусок данных, запусти инстанцию программы на каждом из узлов сети, передавай сериализированные куски данных, зачем gorotuine то передавать, это нонсенс
Roman
это зачем?
Например, передать на другую ноду или другой процесс
Roman
Например, передать на другую ноду или другой процесс
дак передай кусок данных, а на другой ноде go handler(data)
Roman
дак передай кусок данных, а на другой ноде go handler(data)
Это закат солнца вручную. Но изначально вопрос был не про это. А про то, что создание гороутины - это тоже аллокация
Roman
Это закат солнца вручную. Но изначально вопрос был не про это. А про то, что создание гороутины - это тоже аллокация
ну верно, но опять-же не всегда! Go при завершении старых гоурутин способен их заново использовать, он сразу не восбождает
Roman
что не освобождает?
ресурсы, Go использует старые рутины заново, не всегда он под новую рутину заново память выделяет
Ivan
а можешь ссылку дать на почитать?
Roman
а можешь ссылку дать на почитать?
звучит комично, но не могу найти где я это слышал/читал, помоему это было презентационное видео
Roman
а можешь ссылку дать на почитать?
по "golang goroutine reuse memory" тоже не могу найти, помоему это в каком то go-talk'е было сказано и мной услышано, видимо это такие глубокие дебри языка в которые особо никто не лезит
Ivan
я вот тоже
Roman
я вот тоже
печалька, может быть по видео презентациям поискать (на тему golang performance)
nvkv
Ты про паттерн Map-Reduce слышал при обработке распределенных данных?
nvkv
Мне Map функции все возможные в мире сразу надо на каждой ноде определить?
nvkv
Задача "засериализовать компьютейшн и отправить по сети" это достаточно частый кейз, тащемта
Roman
Задача "засериализовать компьютейшн и отправить по сети" это достаточно частый кейз, тащемта
никогда не решал задачи столь динамичного характера, мне это не нужно
Roman
но, согласись, это не значит, что их нет
они то конечно есть, но уж точно их не выше описаным способом решать типа "засериализировать goroutine", уж не знаю можно ли засериализировать lambda функцию в Go, но сериализировать поток это нонсенс
nvkv
Горутина это не поток
nvkv
Поток это канал
nvkv
И его не надо сериализовать, его нужно просто научить другому транспорту
nvkv
И это, насколько я понимаю, одна из самых ожидаемых фич в го :)
Roman
Горутина это не поток
я имеею ввиду thread, (thread на русский язык вроде как "поток" переводится). чисто технически goroutine = green thread
nvkv
tcp transport for channels
engelbart
Ну типа рабитmq ?
Roman
tcp transport for channels
в чём проблема воплотить?? у меня асинхронный сервер по пободной схеме работает, там WebSockets но разницы нет
Roman
не думаю что разработчики действительно встроят в язык транспорт каналов по TCP, это усложнит язык, а изначальная цель у них наоборот его не усложнять
nvkv
я имеею ввиду thread, (thread на русский язык вроде как "поток" переводится). чисто технически goroutine = green thread
у меня, кстати, в голове никогда thread как "поток" не переводилось, скорее как "нить", а чаще всего тупо "тред" :)
nvkv
поэтому с потоком ассоциируются потоки
nvkv
сорян
nvkv
не думаю что разработчики действительно встроят в язык транспорт каналов по TCP, это усложнит язык, а изначальная цель у них наоборот его не усложнять
не понимаю, каким образом реализация прозрачного транспортного слоя в, по-сути, библиотечном коде усложнит язык, ну да ладно
Roman
у меня, кстати, в голове никогда thread как "поток" не переводилось, скорее как "нить", а чаще всего тупо "тред" :)
хмм, я просто не из России, не знаю как действительно русские thread'ы называют.. но называть их нитями довольно странно по моему
nvkv
поэтому обычно их называют тредами
Roman
поэтому обычно их называют тредами
просто я стараюсь русский с английским не мешать, а то как увижу: "аллоцировать мэм для компьютэйшна ради перформенса" аж глаза режит, почему не "выделить память на вычисления ради производительности" 😀
Roman
тоже самое с "трэдами"
Roman
https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C всё-таки можно thread потоком называть 😋
Roman
https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%82%D0%BE%D0%BA_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F
nvkv
Да, всё так
nvkv
Но путаница ужасная постоянно из-за русификации бывает
Roman
Но путаница ужасная постоянно из-за русификации бывает
then it's better to talk in english when talking 'bout any kind of IT and programming stuff
engelbart
тише товарищи, буржуи слушают
Мерль
Нет, до нутра либы мне нужно дойти чтобы понять как она работает и как надо и не надо её использовать
Зато, блин, мне надо лезть в глубь библиотеки, чтобы понять, какие константы используется в качестве enum на этот раз. Я уж не говорю о том, насколько тип Result удобен для обработки "ошибок как значений" За то, что в Go нет enum, Пайк будет гореть в аду вечно, истинно вам говорю!
Мерль
Я уж не говорю о бесконечных interface{}, которые нужно кастовать, когда работаешь с не нативными контейнерами(либо приходится городить кодогенератор). Хотя нет, даже в гребаном контексте надо кастовать типы!
Anonymous
Эээ, кто-то нелестно отзывается о Go? Зовите админов, это оскорбление чувств гоферов!
Anonymous
One
кул, фанатизм но пасаран =)
One
Люк, я твой атэц!
nvkv
он может из Го даже массивы выбросить и всё равно ад его не примет