我正在尝试从2个go例程打印N个数字:
去例行奇数():这只能打印奇数
去例行偶():这只能打印偶数
输出应为:1 2 3 4 5 6 7 8 9 10
我正在尝试使用同步来解决此问题。等待组。我有以下疑问:
问题 1.哪种并发机制最适合此问题?通道、等待组、互斥锁等?如果您可以为相同的代码提供工作代码,那将是理想的。
问题 2.为什么我无法通过以下代码正确打印序列?我做错了一些我无法纠正的事情。请帮助纠正。
package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
var wgO sync.WaitGroup
var wgE sync.WaitGroup
func even() {
defer wg.Done()
for i := 2; i <= 10; i += 2 {
wgE.Add(1)
wgO.Wait()
fmt.Println(i)
wgE.Done()
}
}
func odd() {
defer wg.Done()
for i := 1; i <= 10; i += 2 {
wgO.Add(1)
fmt.Println(i)
wgO.Done()
wgE.Wait()
}
}
func main() {
wg.Add(2)
go even()
go odd()
wg.Wait()
}
莫回无
潇潇雨雨
相关分类