在Ubuntu下使用Golang进行并发编程,主要依赖于Go语言的轻量级线程(goroutines)和通道(channels)。以下是一个简单的示例,展示了如何在Go中实现并发编程:
首先,确保你已经安装了Go。如果没有,请访问https://golang.org/dl/ 下载并安装适用于Ubuntu的Go版本。
创建一个名为main.go
的文件,并在其中编写以下代码:
package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1) // 增加WaitGroup的计数器
go func(id int) {
defer wg.Done() // 在goroutine完成时减少WaitGroup的计数器
fmt.Printf("Goroutine %d starting\n", id)
time.Sleep(2 * time.Second) // 模拟耗时操作
fmt.Printf("Goroutine %d finished\n", id)
}(i)
}
wg.Wait() // 等待所有goroutine完成
fmt.Println("All goroutines finished")
}
在这个示例中,我们使用了sync.WaitGroup
来确保主函数等待所有goroutine完成。我们创建了5个goroutine,每个goroutine都会打印开始和结束的消息,并在中间模拟耗时操作(2秒)。
main.go
文件的目录,并运行以下命令来执行程序:go run main.go
这个示例展示了如何在Go中使用goroutines和WaitGroup实现并发编程。你可以根据自己的需求调整代码,例如使用通道(channels)在不同goroutine之间传递数据。