База Hintsage

Горутины и каналы

Конкурентность, goroutines, channels, select и синхронизация.

Практика

Вопросы: Горутины и каналы

Разберите ошибку в коде: какой участник должен закрывать канал, чтобы несколько отправителей не завершили его преждевременно?

package main

import (
	"fmt"
	"sync"
)

func main() {
	ch := make(chan int)
	var wg sync.WaitGroup
	for i := 0; i < 2; i++ {
		wg.Add(1)
		go func(v int) {
			defer wg.Done()
			ch <- v
			close(ch)
		}(i)
	}
	go func() { wg.Wait(); close(ch) }()
	for v := range ch { fmt.Println(v) }
}
Программирование GoГорутины и каналыGo-разработчик серверных приложений

Показано 1–20 из 50