Go語言程式:建立兩個Goroutine


在使用Go語言時,可能需要建立兩個goroutine來進行並行處理、非同步操作等。在本Go語言文章中,我們將探討如何使用匿名函式、命名函式以及函式呼叫來建立兩個goroutine。在Go語言中,goroutine是一個獨立的併發函式,它允許函式併發執行,從而實現併發程式設計。

語法

time.Sleep(duration)
  • 這是一個內建的Go語言函式,用於暫停程式的執行。

  • 它只接受一個引數“duration”。

  • duration:這是您想要休眠的時間長度。

演算法

  • 啟動主goroutine。

  • 透過呼叫匿名函式,在主goroutine中建立一個新的goroutine。

  • 在第一個goroutine中,迴圈從i = 1到i = 4。“Goroutine 1:”將被打印出來,後面跟著i的當前值。休眠500毫秒。

  • 透過呼叫另一個匿名函式,在主goroutine中建立另一個goroutine。

  • 在第二個goroutine中,迴圈從i = 1到i = 4。“Goroutine 2:”將被打印出來,後面跟著i的當前值。休眠500毫秒。

  • 在生成goroutine後,主goroutine休眠2秒,以允許子goroutine執行。

示例1

在這個例子中,我們將使用匿名函式建立兩個goroutine,這種方法推薦用於簡單的goroutine設定。在下面的程式碼中,我們將建立兩個goroutine並使用迴圈列印訊息。

package main

import (
   "fmt"
   "time"
)

func main() {
   go func() {
      for i := 1; i <= 4; i++ {
	     fmt.Println("Goroutine 1:", i)
		 time.Sleep(time.Millisecond * 500)
	  }
   }()

   go func() {
      for i := 1; i <= 4; i++ {
	     fmt.Println("Goroutine 2:", i)
         time.Sleep(time.Millisecond * 500)
      }
   }()

   time.Sleep(time.Second * 2)
}

輸出

Goroutine 2: 1 
Goroutine 1: 1 
Goroutine 1: 2 
Goroutine 2: 2 
Goroutine 1: 3 
Goroutine 2: 3 
Goroutine 2: 4 
Goroutine 1: 4 

示例2

在這個例子中,我們將建立兩個單獨的命名函式,每個函式都將作為goroutine執行。在下面的程式碼中,兩個goroutine併發執行並列印訊息以及數字。

package main

import (
   "fmt"
   "time"
)

func printMessage(message string) {
   for i := 1; i <= 6; i++ {
      fmt.Println(message, i)
      time.Sleep(time.Millisecond * 500)
	}
}

func main() {
   go printMessage("Goroutine 1:")
   go printMessage("Goroutine 2:")

   time.Sleep(time.Second * 2)
}

輸出

Goroutine 1: 1 
Goroutine 2: 1 
Goroutine 1: 2 
Goroutine 2: 2 
Goroutine 2: 3 
Goroutine 1: 3 
Goroutine 1: 4 
Goroutine 2: 4 
Goroutine 2: 5 

示例3

在這個例子中,我們不直接定義函式,而是透過傳遞函式名作為引數來呼叫現有函式。在下面的程式碼中,我們將使用兩個併發執行的goroutine列印特定計數的數字。

package main

import (
   "fmt"
   "time"
)

func printMessage(message string, count int) {
   for i := 1; i <= count; i++ {
      fmt.Println(message, i)
      time.Sleep(time.Millisecond * 500)
	}
}

func main() {
   go printMessage("Goroutine 1:", 5)
   go printMessage("Goroutine 2:", 5)

   time.Sleep(time.Second * 3)
}

輸出

Goroutine 2: 1 
Goroutine 1: 1 
Goroutine 1: 2 
Goroutine 2: 2 
Goroutine 2: 3 
Goroutine 1: 3 
Goroutine 1: 4 
Goroutine 2: 4 
Goroutine 2: 5 
Goroutine 1: 5 

結論

在這篇文章中,我們討論瞭如何在Go語言中建立兩個goroutine。我們研究了三種不同的建立兩個goroutine的方法:匿名函式、命名函式和使用函式呼叫。Goroutine允許函式併發執行,從而實現併發程式設計。

更新於:2023年7月13日

瀏覽量:191

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.