go-courses

module
v0.0.0-...-396bba6 Latest Latest
Warning

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

Go to latest
Published: Nov 17, 2022 License: MIT

README

go-courses

Directories

Path Synopsis
lection_2
1_variables
многострочный комментарий переменные в golang
многострочный комментарий переменные в golang
lection_3
8_package_func_doc/world
Package world документация ко всему пакету
Package world документация ко всему пакету
lection_4
lection_5
1_simple
Запуск go рутин именованные функции или анонимные
Запуск go рутин именованные функции или анонимные
2_shared_data
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться
3_chanels
Один из механизмов синхронизации - каналы Каналы, это объект через который можно обеспечить взаимодействие нескольких горутин В принимающей (или возвращающей) канал функции, можно указать направление работы с каналом Только для чтения - "<-chan" или только для записи "chan<-"
Один из механизмов синхронизации - каналы Каналы, это объект через который можно обеспечить взаимодействие нескольких горутин В принимающей (или возвращающей) канал функции, можно указать направление работы с каналом Только для чтения - "<-chan" или только для записи "chan<-"
5_multiplexor
Иногда у вас есть несколько каналов, и вы хотите читать из любого из них В самом простом случае - можно сделать функцию, которая вернет значения из любого переданного канала
Иногда у вас есть несколько каналов, и вы хотите читать из любого из них В самом простом случае - можно сделать функцию, которая вернет значения из любого переданного канала
6_select
Но гораздо проще объединять логику каналов через оператор select Он позволяет проверить на возможность операции с несколькими каналами сразу.
Но гораздо проще объединять логику каналов через оператор select Он позволяет проверить на возможность операции с несколькими каналами сразу.
lection_6
10_race/atomic
Также, когда само общее значение - это просто число Можно использовать пакет atomic, для того, чтобы гарантировать очередность изменений объекта
Также, когда само общее значение - это просто число Можно использовать пакет atomic, для того, чтобы гарантировать очередность изменений объекта
10_race/mutex
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться Как пример защиты данных от небезопасных изменений, можно использовать структуру Mutex У нее также нет публичных полей, но, есть два публичных метода Lock(), который даст только одной подпрограмме продолжить выполнение блока, остальне заблокируются в ожидании Unlock(), который снимает лок, захваченный ранее
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться Как пример защиты данных от небезопасных изменений, можно использовать структуру Mutex У нее также нет публичных полей, но, есть два публичных метода Lock(), который даст только одной подпрограмме продолжить выполнение блока, остальне заблокируются в ожидании Unlock(), который снимает лок, захваченный ранее
11_workerpool
Более сложный пример, с использованием пула обработчиков для типовых задач
Более сложный пример, с использованием пула обработчиков для типовых задач
8_deadlock
Если при запуске программы все go рутины окажутся в состоянии ожидания, runtime выкинет панику, с сообщением all goroutines are sleeping
Если при запуске программы все go рутины окажутся в состоянии ожидания, runtime выкинет панику, с сообщением all goroutines are sleeping
9_cancel
Но, безопаснее использовать пакет sync, в частности структуру WaitGroup У нее нет публичных полей, но есть 3 метода Add увеличивает счетчик ожидаемых работ, Done декрементит, Wait - блокируется, пока внутренний счетчик не станет равным 0
Но, безопаснее использовать пакет sync, в частности структуру WaitGroup У нее нет публичных полей, но есть 3 метода Add увеличивает счетчик ожидаемых работ, Done декрементит, Wait - блокируется, пока внутренний счетчик не станет равным 0
scratch

Jump to

Keyboard shortcuts

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