【发布时间】:2017-05-18 06:23:20
【问题描述】:
我有一个函数调用另一个返回 chan 数组的函数。我目前有一个 for 循环遍历数组中的范围,它运行程序无限期地输出通道更新作为通过。
func getRoutes() {
for r := range rtu {
if r.Type == 24 {
fmt.Printf("Route added: %s via %s\n",r.Dst.String(),r.Gw.String())
} else if r.Type == 25 {
fmt.Printf("Route deleted: %s via %s\n",r.Dst.String(),r.Gw.String())
}
}
}
当我从 main() 调用 getRoutes() 时,一切都按计划进行,但它阻塞了应用程序。我尝试从main() 调用go getRoutes(),尽管看起来好像根本没有调用该函数。
如何使用 go 例程以非阻塞方式在后台运行此函数?
【问题讨论】:
-
这是我对不久前提出的同一个问题的回答。 stackoverflow.com/questions/9543835/… - 它使用运行时 pkg 中的方法。
标签: go