diff --git a/examples.txt b/examples.txt index ac5dcde..6a15cb3 100644 --- a/examples.txt +++ b/examples.txt @@ -22,7 +22,7 @@ Switch Горутины (Goroutines) Каналы (Channels) Буферизированный канал (Channel Buffering) -Channel Synchronization +Синхронизация канала (Channel Synchronization) Channel Directions Select Timeouts diff --git a/examples/channel-synchronization/channel-synchronization.go b/examples/channel-synchronization/channel-synchronization.go index 889b97b..643c5d0 100644 --- a/examples/channel-synchronization/channel-synchronization.go +++ b/examples/channel-synchronization/channel-synchronization.go @@ -1,8 +1,8 @@ -// We can use channels to synchronize execution -// across goroutines. Here's an example of using a -// blocking receive to wait for a goroutine to finish. -// When waiting for multiple goroutines to finish, -// you may prefer to use a [WaitGroup](waitgroups). +// Мы можем использовать каналы для синхронизации +// выполнения между горутинами. Вот пример +// использования блокирующего получения для ожидания +// завершения работы горутины. При ожидании завершения +// нескольких процедур вы можете использовать [WaitGroup](waitgroups). package main @@ -11,26 +11,27 @@ import ( "time" ) -// This is the function we'll run in a goroutine. The -// `done` channel will be used to notify another -// goroutine that this function's work is done. +// Эту функцию мы будем запускать в горутине. Канал +// `done` будет использован для оповещения другой +// горутины о том, что функция выполнена успешно. func worker(done chan bool) { fmt.Print("working...") time.Sleep(time.Second) fmt.Println("done") - // Send a value to notify that we're done. + // Отправить значение, чтобы сказать что функция + // выполнена успешно. done <- true } func main() { - // Start a worker goroutine, giving it the channel to - // notify on. + // Запустите воркера в горутине и передайте ему канал + // для оповещения. done := make(chan bool, 1) go worker(done) - // Block until we receive a notification from the - // worker on the channel. + // Блокируйте, пока мы не получим уведомление от + // воркера из канала. <-done } diff --git a/examples/channel-synchronization/channel-synchronization.sh b/examples/channel-synchronization/channel-synchronization.sh index b3496b3..e6a6226 100644 --- a/examples/channel-synchronization/channel-synchronization.sh +++ b/examples/channel-synchronization/channel-synchronization.sh @@ -1,6 +1,5 @@ $ go run channel-synchronization.go working...done -# If you removed the `<- done` line from this program, the -# program would exit before the `worker` even -# started. +# Если вы удалите строку `<- done` из этой программы, +# программа закроется до того, как `воркер` даже запустится.