在Go语言中,实现并发编程的方式非常直观,主要依赖于两大核心机制:goroutines(轻量级协程)和channels(通道)。简单来说,goroutines是由Go运行时统一调度和管理的轻量级线程,而channels则是它们之间传递数据的关键沟通桥梁。

我们先通过一个具体示例,感受一下在Linux环境下如何使用Go编写并发程序:
第一步,创建一个名为 main.go 的文件。
接着,将以下代码放入该文件中:
package main
import (
"fmt"
"time"
)
func printNumbers() {
for i := 1; i <= 5; i++ {
fmt.Printf("Number: %d\n", i)
time.Sleep(1 * time.Second)
}
}
func printLetters() {
for _, letter := range "ABCDE" {
fmt.Printf("Letter: %c\n", letter)
time.Sleep(1 * time.Second)
}
}
func main() {
go printNumbers()
go printLetters()
time.Sleep(6 * time.Second)
fmt.Println("Finished")
}
这个示例定义了两个函数:printNumbers负责输出数字1到5,printLetters负责输出字母A到E,每次输出之间均暂停1秒。关键在于main函数中,我们通过go关键字分别将这两个函数启动为独立的goroutine,随后主线程等待6秒钟,确保两个goroutine有充足的时间执行完毕。
运行过程非常简便。首先打开Linux终端,进入main.go所在的目录,然后执行:
go run main.go
你会看到数字和字母交替出现,直观地展示出两个任务正在并发执行。
当然,这只是一个最基础的入门示例。在实际项目中,你可以基于此构建更复杂的并发模式。Go语言提供的这套并发模型,让开发者能够轻松编写出高性能、可扩展的程序。
