实现一个常驻任务,读取监控数据,上报到监控系统
设计思路
在主任务中启动一个异步goroutine监听channel数据,当channel中有数据到来时,就执行上报操作
异步任务函数
func readBufferWorker(chans <- chan int ) {
for {
if datas,ok := <- chans;ok {
// send to 监控
}
}
}
主进程发送监控数据
func sendDataWorker(data int){
chans <- data
}
整体代码如下
package main
import (
"fmt"
"sync"
)
var chans chan int
var wg sync.WaitGroup
func readBufferWorker(chans <- chan int ) {
for {
if datas,ok := <- chans;ok {
fmt.Println(datas)
}
}
}
func sendDataWorker(data int){
chans <- data
}
func main() {
wg.Add(1)
chans = make(chan int, 20)
go readBufferWorker(chans)
// 发送数据
for i := 0; i < 10; i++ {
sendDataWorker(i)
}
defer close(chans)
wg.Wait()
fmt.Println("end")
}
```