gosamples

module
v0.0.0-...-5684ee4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2021 License: Apache-2.0

README

gosamples

Go lang samples

Для дальнейшего погружения предлагаем пройти 2 курса по Go на Coursera с Василием Романовым: https://www.youtube.com/watch?v=9Pk7xAT_aCU

Лекция читается в рамках образовательного проекта "Техносфера Mail.ru Group" при МГУ им.Ломоносова.

Repo

Initial Repo

Ideas

Source

Directories

Path Synopsis
Vars
Но гораздо проще объединять логику каналов через оператор select Он позволяет проверить на возможность операции с несколькими каналами сразу.
Но гораздо проще объединять логику каналов через оператор select Он позволяет проверить на возможность операции с несколькими каналами сразу.
Если при запуске программы все go рутины окажутся в состоянии ожидания, runtime выкинет панику, с сообщением all goroutines are sleeping
Если при запуске программы все go рутины окажутся в состоянии ожидания, runtime выкинет панику, с сообщением all goroutines are sleeping
Но, безопаснее использовать пакет sync, в частности структуру WaitGroup У нее нет публичных полей, но есть 3 метода Add увеличивает счетчик ожидаемых работ, Done декрементит, Wait - блокируется, пока внутренний счетчик не станет равным 0
Но, безопаснее использовать пакет sync, в частности структуру WaitGroup У нее нет публичных полей, но есть 3 метода Add увеличивает счетчик ожидаемых работ, Done декрементит, Wait - блокируется, пока внутренний счетчик не станет равным 0
309_race
atomic
Также, когда само общее значение - это просто число Можно использовать пакет atomic, для того, чтобы гарантировать очередность изменений объекта
Также, когда само общее значение - это просто число Можно использовать пакет atomic, для того, чтобы гарантировать очередность изменений объекта
mutex
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться Как пример защиты данных от небезопасных изменений, можно использовать структуру Mutex У нее также нет публичных полей, но, есть два публичных метода Lock(), который даст только одной подпрограмме продолжить выполнение блока, остальне заблокируются в ожидании Unlock(), который снимает лок, захваченный ранее
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться Как пример защиты данных от небезопасных изменений, можно использовать структуру Mutex У нее также нет публичных полей, но, есть два публичных метода Lock(), который даст только одной подпрограмме продолжить выполнение блока, остальне заблокируются в ожидании Unlock(), который снимает лок, захваченный ранее
Более сложный пример, с использованием пула обработчиков для типовых задач
Более сложный пример, с использованием пула обработчиков для типовых задач
406_bot

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL