使用Go编程语言时,可以轻松地创建和管理协程goroutines
来实现并发。下面是一个简单的Go协程并发实例,其中创建了两个协程来同时执行不同的任务:
package main
import (
"fmt"
"time"
)
func task1() {
for i := 1; i <= 5; i++ {
fmt.Println("Task 1 - Iteration", i)
time.Sleep(time.Millisecond * 500)
}
}
func task2() {
for i := 1; i <= 5; i++ {
fmt.Println("Task 2 - Iteration", i)
time.Sleep(time.Millisecond * 700)
}
}
func main() {
fmt.Println("Main - Start")
// 启动协程执行task1
go task1()
// 启动协程执行task2
go task2()
// 等待一段时间,以便协程有足够的时间执行
time.Sleep(time.Second * 5)
fmt.Println("Main - End")
}
在这个例子中,我们定义了两个函数 task1
和 task2
,它们分别代表两个不同的任务。在 main
函数中,我们使用 go
关键字并调用这两个函数,将它们封装成协程。这样一来,task1
和 task2
将会并发地执行。
为了确保 main
函数不会在协程执行完成之前退出,我们使用 time.Sleep
函数来暂停 main
函数的执行。在实际应用中,你可能会使用更稳健的方式来等待协程的完成,比如使用通道(channels)或者 sync.WaitGroup
等。
需要注意的是,协程的执行顺序和时间可能会因为调度器的行为而有所不同,因此每次运行结果可能会有所不同。