91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

goroutine該如何理解

發布時間:2022-01-17 16:03:22 來源:億速云 閱讀:143 作者:柒染 欄目:大數據

goroutine該如何理解,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

(1).    假設有一個工程,需要三個工程隊來完成,他們的修建事件互相獨立,誰修建快誰先完成那部分,其他不需要等待其他工程隊.

package main
import (
  "fmt"
  "time"
)

func main() {
  fmt.Println("開始施工")
  go workTwo()
  go workThree()
  go workOne()

  fmt.Println("等待總的工程施工完成")
  time.Sleep(time.Second * 3)
}

// workOne 工程隊1修建一部分
func workOne() {
  workTime := time.Millisecond * 3000 // 完成工程時間
  time.Sleep(workTime)
  fmt.Println("修建完成: workOne")

}

// workTwo 工程隊2修建一部分
func workTwo() {
  workTime := time.Millisecond * 2500 // 完成工程時間
  time.Sleep(workTime)
  fmt.Println("修建完成: workTwo")
}

// workThree 工程隊3修建一部分
func workThree() {
  workTime := time.Millisecond * 2000 // 完成工程時間
  time.Sleep(workTime)
  fmt.Println("修建完成: workThree")
}

(2).  給工程加上驗收功能,用go chan來實現

package main
import (
  "fmt"
  "time"
)

const (
  workOneDone   = "oneDone"
  workTwoDone   = "twoDone"
  workThreeDone = "threeDone"
)

func main() {
  fmt.Println("開始施工")
  ch := make(chan string, 1)

  go func() {
     workTwo(ch)
  }()
  go func() {
     workThree(ch)
  }()
  go func() {
     workOne(ch)
  }()

  go func() {
     test(ch)
  }()
  // 關閉chan
  defer close(ch)
  // 等待總工程完成
  time.Sleep(time.Second * 5)

}

func test(ch chan string) {
  for {
     select {
     case v := <-ch:
        fmt.Printf("驗收該工程隊完成,%s \n", v)
     default:

     }
  }
}

// workOne 工程隊1修建一部分
func workOne(ch chan string) {
  workTime := time.Millisecond * 3000 // 完成工程時間
  time.Sleep(workTime)
  fmt.Println("修建完成: workOne")
  ch <- workOneDone
}

// workTwo 工程隊2修建一部分
func workTwo(ch chan string) {
  workTime := time.Millisecond * 2500 // 完成工程時間
  time.Sleep(workTime)
  fmt.Println("修建完成: workTwo")
  ch <- workTwoDone
}

// workThree 工程隊3修建一部分
func workThree(ch chan string) {
  workTime := time.Millisecond * 2000 // 完成工程時間
  time.Sleep(workTime)
  fmt.Println("修建完成: workThree")
  ch <- workThreeDone
  return
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金乡县| 全椒县| 孟津县| 岳池县| 郎溪县| 明水县| 山阳县| 攀枝花市| 封丘县| 蒲江县| 兴和县| 梧州市| 新郑市| 肇州县| 大姚县| 嘉定区| 雷山县| 济南市| 礼泉县| 北流市| 富川| 沭阳县| 宁化县| 昌江| 巴南区| 岳阳市| 蒙山县| 巫山县| 汉寿县| 罗城| 平利县| 金昌市| 连南| 罗江县| 西青区| 常德市| 营口市| 马山县| 司法| 安阳市| 永和县|