close
建立一條 Goroutine 後,必須要延遲或堵塞通道(沒有值傳入)才能讓程式有時間去執行 Goroutine 的涵式,否則一呼叫 Goroutine 涵式,結果程式就結束了。以下程式碼是最好的例子:
package main
import (
"fmt"
)
func main(){
go A() // 產生 Goroutine
// 程式結束
}
func A() { // 本涵式根本沒機會(沒時間)執行到
for {
fmt.Println("B")
}
}
以上執行結果:無
---------------------------------------------------
以下程式碼將呼叫 Goroutine 後,並且堵塞住,程式就有足夠時間執行 Goroutine 的涵式,如下:
package main
import (
"fmt"
)
func main(){
go A() // 產生 Goroutine
i := make(chan int) // 宣告通道
<- i // 堵塞通道 (沒有值傳入通道,所以堵塞,有值被傳入就會執行下一行程式碼,直到程式被結束為止)
}
func A() { // 本涵式被執行到了
for {
fmt.Println("B")
}
}
以上執行結果:BBBBBBBBBBBBBB ...(無窮迴圈)
全站熱搜