Как стать автором
Обновить

Комментарии 19

Ещё не читал, но уже одобряю.

Было бы удобно добавить в первую статью ссылку на вторую (так же списком, или в конце).

спасибо! добавлю

Горутина - реализация в Go корутины

Да ну? Вот видно, что backend developer писал :-)

Поскольку не на собесе, не буду пересказывать своими словами.
http://www.golangpatterns.info/concurrency/coroutines
Заминусовавший - Вы собес-то в приличное место не факт, что прошли бы :-)

Возможно, комментатор хотел сказать, что стоило назвать горутины сопрограммами, хотя принципиальной разницы тут никакой.

Нет, их просто не стоило так называть.

Goroutines

They're called goroutines because the existing terms—threads, coroutines, processes, and so on—convey inaccurate connotations.

https://tip.golang.org/doc/effective_go

Большинству людей сейчас нет никакой необходимости сейчас сталкиваться с сопрограммами, в крайнем случае - их имитация (которая на Go отлично делается через goroutines, но это все равно имитация), вот и пишут несколько неаккуратно.

Автор, судя по профилю, за два года три работы сменил, наверное, знает, что на собеседованиях спрашивают :-) Но это повод опечалиться, а не повод повторять.

При чтении/записи из/в nil channel будет не паника, а блокировка

Вы совершенно правы, будет fatal error с deadlock, только не могу, сообразить, где в статье писал, что будет паника?

Если же мы этого не сделали и пишем в nil канал, то произойдет fatal error, так как в исходниках Go идет проверка на nil.

Да, будет deadlock, но не всегда fatal error Стоит добавить уточнение 'при условии всех спящих горутин'

Возможно, я как читатель неправильно понял область ответа

Вопросы и готовые ответы - это хорошо. Может, вместо рыбы научите рыбачить? Подскажите, куда копать, чтобы разобраться в устройстве Go?

Чукча даже не программист, но умеет учиться.

Формат статьи не научить, а помочь при подготовке к собеседованию освежить знания в памяти и показать места, на которые следует дополнительно обратить свое внимание. Поэтому ответы на вопросы раскрываются в достаточной мере, чтобы вспомнить, но не чтобы заучить и проходить собеседования. Рамок статьи для "научить" не хватит.

А мне не надо, чтобы меня учили. Мне просто интересно, как можно найти ответы на все эти вопросы. Не на SO же? Какие есть источники информации, которые раскрывают подноготную Go?

Самая актуальная информация статьи на том же хабре или медиуме, что-то есть на тпрогере, также советую почитать статьи от авторов языка. Для более общих знаний я бы посоветовал "Язык программирования Go" Керниган Брайан У., Донован Алан А. А. Но надо смотреть наиболее позднее издание (хотя с учетом перевода на русский за апдейтами языка все равно не угонится). Ну и доклады всевозможные, только надо надо тоже учитывать свежесть, так как тот же сборщик мусора и планировщик постоянно дорабатывают. Если любите ковыряться в коде, то можно и с исходниками поиграться, меня очень впечатлило в своем время, что я локально могу там что-то менять, меняя поведение языка.

Но в целом, если есть запрос, как будет время постараюсь собрать пул ресурсов или линкану сюда ссылку на гитхаб, если встречу похожее.

Но в целом, если есть запрос, как будет время постараюсь собрать пул ресурсов или линкану сюда ссылку на гитхаб, если встречу похожее.

Да, будет здорово!

Очень хороший чеклист, спасибо

Перед собеседованием буду проходить по нему, чтобы ничего не упустить

Кажется, при передаче мапы в качестве параметра функции мы передаём не сасу структуру, а копируем указатель на hmap структуру

https://dave.cheney.net/2017/04/30/if-a-map-isnt-a-reference-variable-what-is-it

Спасибо за внимательность, исправлю!

Как уже написали выше - при записи и чтении из nil канала, ошибка возможно при отсутствии других горутин - но это случай обычного дедлока. А вот про саму фишку чтения-записи nil каналов, можно рассказать, как про известный паттерн, разумеется используют в составе select, например при реализации различных state-поведений. В заметке же косвенно вылазит мысль - что не делайте так - это плохо ))).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации