From 50383b5cabfbc7754f6d8d4ba0e0df50e07c87c0 Mon Sep 17 00:00:00 2001 From: badkaktus Date: Tue, 8 Oct 2019 15:42:41 +0300 Subject: [PATCH] waitgroups --- examples/waitgroups/waitgroups.go | 27 ++++++++++++++------------- examples/waitgroups/waitgroups.sh | 4 ++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/examples/waitgroups/waitgroups.go b/examples/waitgroups/waitgroups.go index 2cf16a3..db894db 100644 --- a/examples/waitgroups/waitgroups.go +++ b/examples/waitgroups/waitgroups.go @@ -1,5 +1,5 @@ -// To wait for multiple goroutines to finish, we can -// use a *wait group*. +// Для ожидания выполнения нескольких горутин, мы можем +// использовать встроенную конструкцию *WaitGroup*. package main @@ -9,34 +9,35 @@ import ( "time" ) -// This is the function we'll run in every goroutine. -// Note that a WaitGroup must be passed to functions by -// pointer. +// Эта функция, которую мы будем запускать в каждой +// горутине. Обратите внимание, что WaitGroup должна +// быть передана в функцию по указателю. func worker(id int, wg *sync.WaitGroup) { fmt.Printf("Worker %d starting\n", id) - // Sleep to simulate an expensive task. + // Sleep симулирует тяжелую задачу. time.Sleep(time.Second) fmt.Printf("Worker %d done\n", id) - // Notify the WaitGroup that this worker is done. + // Оповестить WaitGroup что воркер выполнился wg.Done() } func main() { - // This WaitGroup is used to wait for all the - // goroutines launched here to finish. + // Эта WaitGroup используется для ожидания выполнения + // всех горутинё запущенных здесь. var wg sync.WaitGroup - // Launch several goroutines and increment the WaitGroup - // counter for each. + // Запускаем несколько горутин и инкрементируем счетчик + // в WaitGroup для каждой запущенной горутины. for i := 1; i <= 5; i++ { wg.Add(1) go worker(i, &wg) } - // Block until the WaitGroup counter goes back to 0; - // all the workers notified they're done. + // Блокируем звершение программы до момента, пока + // счетчик WaitGroup снова не станет равным 0. + // Это будет означать, что все горутины выполнились. wg.Wait() } diff --git a/examples/waitgroups/waitgroups.sh b/examples/waitgroups/waitgroups.sh index c2a6c11..9ab6639 100644 --- a/examples/waitgroups/waitgroups.sh +++ b/examples/waitgroups/waitgroups.sh @@ -10,5 +10,5 @@ Worker 2 done Worker 5 done Worker 3 done -# The order of workers starting up and finishing -# is likely to be different for each invocation. +# Порядок воркеров начинающихся и выполненных, вероятно +# будет изменяться при каждом запуске.