這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package main
import (
"log"
"math/rand"
"time"
)
func UploadNetvalueFile(done chan bool) {
//利用隨機函數類比不同檔案的處理時間
r := rand.New(rand.NewSource(time.Now().UnixNano()))
x := r.Intn(20)
log.Println("UploadNetvalueFile: ", x)
time.Sleep(time.Second * time.Duration(x))
log.Println("UploadNetvalueFile OK")
done <- true
}
func UplaodSaleFareFile(done chan bool) {
//利用隨機函數類比不同檔案的處理時間
r := rand.New(rand.NewSource(time.Now().UnixNano() + 10))
x := r.Intn(20)
log.Println("UplaodSaleFareFile: ", x)
time.Sleep(time.Second * time.Duration(x))
log.Println("UplaodSaleFareFile OK ")
done <- true
}
func main() {
t1 := time.Now()
tasknum := 2
done := make(chan bool, tasknum)
// 類比組建檔案的時間
time.Sleep(time.Second * 1)
log.Println("create netvalue file !")
// 並發執行
go UploadNetvalueFile(done)
// 類比組建檔案的時間
time.Sleep(time.Second * 1)
log.Println("create salefare file !")
// 並發執行
goUplaodSaleFareFile(done)
//等待所有並發完成
func() {
for i := 0; i < tasknum; i++ {
log.Println(<-done)
}
}()
t2 := time.Now()
log.Printf("耗時:%d\n", t2.Sub(t1))
}