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.