Hip-hop, хип-хоп - что послушать

Иностранный (инглишь и прочее)

#4.3 golang goroutine Горутина - что это такое

Горутины (goroutines) — это легковесные потоки выполнения в языке Go, управляемые планировщиком среды выполнения (runtime), а не операционной системой.

Горутины позволяют запускать функции конкурентно (асинхронно), потребляя очень мало памяти - всего около 2 КБ, что позволяет создавать их в тысячах экземпляров

Главная горутина

Каждая программа на Go имеет главную горутину, которая автоматически создается при запуске функции main()

Стэк как тип памяти - Что это в программировании, стек

Стек – это блок непрерывной памяти, где при вызове функции данные появляются, а при ее завершении – удаляются.

Стековая память работает по принципу «последним пришел – первым ушел» (LIFO - Last-In-First-Out), т.е. в этом смысле она соответствует правилам стэка, а потому так и называется.

Куча (heap) - что это в программировании

Куча (heap) — это область динамической памяти, выделяемая операционной системой для нужд программы, где данные хранятся неструктурированно и остаются доступными, пока их явно не удалят.

В отличие от стековой памяти, куча позволяет выделять большие объемы памяти, размер которых неизвестен заранее, и использовать их за пределами текущей функции.

Материалы по теме

  • Стек и куча: в чем разница?: https://wiki.merionet.ru/articles/stek-i-kuca-v-cem-raznica

Процессы и Потоки - что это и чем они отличаются, Выполнение программы - что это в Программировании

Если кратко, то:

  • Процесс (process) — это запущенная программа с собственным изолированным адресным пространством памяти, выделенным ОС
  • Поток (thread) — это «легковесная» единица выполнения внутри процесса, разделяющая его память (кучу) и ресурсы с другими потоками того же процесса. Процессы независимы, а потоки работают сообща, используя общий стек данных.

Важные моменты:

golang recover() - За что отвечает функция восстановления

Перевод официальной документации:
Встроенная функция recover позволяет программе управлять поведением горутины, находящейся в состоянии паники.

Вызов recover внутри отложенной функции (но не в какой‑либо функции, вызываемой из неё) останавливает падение в панику — восстанавливает нормальный ход выполнения программы и извлекает значение ошибки, переданное в вызов panic.

Исключения Exception и их обработка - что это в Программировании

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

Далее обычно происходит следующее:

  1. "Раскрутка" стэка вызовов функций вплоть до момента, пока исключение не перехватят (в обработчике)
  2. Если обработчик для данной исключительной ситуации не найден - программа "падает" (экстеренно завершается)

В си-подобрых языках это может выглядет так (php):

Стэк вызовов функций - стек (Call stack) - что это в программировании

Стэк вызовов функций - список уже сделанных вызовов функций, начиная со стартовой/главной функции ("точки входа") на момент достижения кого-то места в коде программы.

Так как ближайшей к этому месту в коде оказывается функция, вызванная последней, то мы можем говорить о возникновении структуры стэка относительно порядка последующего завершения этих функций.

#14 golang panic Восстановление после паники - "перехват" исключетельной ситуации

Если на каком-то уровне стэка вызовов функций в нашей программе была выброшена паника, то мы можем перехватить её (или как говорят "восстановиться") с помощью определения отложенного выполнения обработчика через defer.

Рассмотрим пример:

#13.2 golang defer Отложенное выполнение вызовов функций

defer ("дэфё") для отложенного выполнения

defer — это ключевое слово в Go, которое позволяет отложить выполнение функции (/вызова функции) до момента завершения выполнения текущей функции, то есть той, в теле которой defer и вызывалось.

Давайте посмотрим как работает отложенное выполнение на таком примере:

Pages

Subscribe to fkn+antitotal RSS