VY
Size: a a a
VY
AM
ВТ
ВТ
VY
FD
RL
FD
RL
FD
func fibonacci(n int, c chan int) {
for i := 0; i < n; i++ {
c <- i
}
close(c)
}
func main() {
wg := sync.WaitGroup{}
cond := sync.NewCond(&sync.Mutex{})
count := 100
allNum := make(chan int, count)
even := make(chan int)
odd := make(chan int)
go fibonacci(count, allNum)
for i := range allNum{
go func(i int) {
defer wg.Done()
wg.Add(1)
cond.L.Lock()
wg.Wait()
if i % 2 ==0 {
even <- i
fmt.Println("четные числа", <-even)
close(even)
}
cond.L.Unlock()
}(i)
go func(i int) {
defer wg.Done()
wg.Add(1)
cond.L.Lock()
wg.Wait()
if i % 2 != 0 {
odd <- i
fmt.Println("не четные числа", <-odd)
close(odd)
}
cond.L.Unlock()
}(i)
}
}
7
FD
VY
RL