Directories ¶
Path | Synopsis |
---|---|
Vars
|
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
|
|
Click to show internal directories.
Click to hide internal directories.