真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

goroutine該如何理解

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

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、漢源ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的漢源網(wǎng)站制作公司

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

package main
import (
  "fmt"
  "time"
)

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

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

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

}

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

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

(2).  給工程加上驗(yàn)收功能,用go chan來實(shí)現(xiàn)

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)
  }()
  // 關(guān)閉chan
  defer close(ch)
  // 等待總工程完成
  time.Sleep(time.Second * 5)

}

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

     }
  }
}

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

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

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

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


分享題目:goroutine該如何理解
網(wǎng)站地址:http://weahome.cn/article/pegoej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部