从redis list获取数据,然后将数据传给三个模块,这三个模块都进行复杂的处理,但是我不关心处理的结果。最开始的时候是用php写的,但是效率堪忧。。打算用go重构,go代码如下:
package main
import (
"fmt"
"os"
)
func sum(values string, typeValue int) {
switch typeValue {
case 0:
a(values)
break
case 1:
b(values)
break
case 2:
c(values)
break
}
}
func main() {
for i := 0; i < 3; i++ {
//起协程处理
go sum("a", i)
}
fmt.Println("done")
}
func a(values string) {
fmt.Println(values)
}
func b(values string) {
fmt.Println(values)
}
func c(values string) {
fmt.Println(values)
}
但是测试的结果是main函数执行完了,协程没有输出打印信息....这种情况该如何处理?
另外一个写文件测试:
package main
import (
"fmt"
"time"
)
func sum(values string, typeValue int) {
switch typeValue {
case 0:
a(values)
break
case 1:
b(values)
break
case 2:
c(values)
break
}
}
func main() {
for i := 0; i < 3; i++ {
//起协程处理
go sum("a", i)
}
time.Sleep(3)
fmt.Println("done")
}
func a(values string) {
fmt.Println(values)
}
func b(values string) {
fmt.Println(values)
}
func c(values string) {
fmt.Println(values)
}
用time sleep一下就有输出.....
两种:channel 或 sync.WaitGroup