[go]基于协程的并发ping(2)

来源:互联网 发布:多普达t5399软件 编辑:程序博客网 时间:2024/06/02 05:30

  直接按目标ip并发的方式,将ping封装为协程函数

 go本身没有提供等待协程join的方法,需要自己实现

/*简单协程版*/package mainimport ("ping""fmt""time"//"os""strconv")var fin chan string; //用于实现jionall func pingr(host string,timeout int){t1:=time.Now().UnixNano()alive,err:=ping.Ping(host,timeout)//alive,err:=true,0t2:=time.Now().UnixNano()fmt.Println(host,alive,(t2-t1)/1000000,err);  fin <- host}var iplist [253]stringfunc main() {fin = make(chan string)  //数组赋值  for i := 0; i < len(iplist); i++ { iplist[i]="192.168.99."+strconv.Itoa(i+1) go pingr(iplist[i],1000) } for i := 0; i < len(iplist); i++ {    <-fin    //fmt.Println(ip,"joined") } }


 

原创粉丝点击