將GO 的併發簡單封裝成一個函數

 

///filelist 待處理的切片
///f 具體執行的函數 --例如,遍歷filelist,拿到每一個元素,作爲參加數傳給f函數進行處理

func H_Goroutine(filelist []string,f func(s string,c chan string)) {
    c := make(chan string,,len(filelist))    //防止主go提前結束
    for _,v := range filelist {
        go f(v,c) //do something
    }
    for i:=0;i<len(filelist);i++{
        <-c
    }
    close(c)
}
//具體的執行方法(調用上面的H_Goroutine時這個方法要具體實現)
func f(s string,c chan string) {

    //do something
    fmt.Println(s)

    c <- s    //這個很重要,在做具體的事結束之後要記得寫入一個信息到chan中,作爲信息告知,這個事情已經結果
}



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章