Golang 创建两个并发程序
在使用Go语言时,可能会遇到需要创建两个并发程序以进行并行处理、异步操作等的情况。在本Go语言文章中,我们将探讨如何使用匿名函数、命名函数以及使用函数调用来创建两个并发程序。在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,这种方法适用于简单的go routine设置。在下面给出的代码中,我们将创建两个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
结论
在本文中,我们讨论了如何在一种语言中创建两个goroutine。我们介绍了三种不同的方法来建立两个goroutine,即匿名函数、命名函数和使用函数调用。Goroutine通过允许函数并发运行,实现了并发编程。