您的位置:首页 >Go语言在CentOS上如何实现并发编程
发布于2026-04-21 阅读(0)
扫一扫,手机访问
想在CentOS系统里玩转Go语言的并发编程?这事儿其实没想象中那么复杂。Go语言自带的并发模型——也就是Goroutines和Channels——设计得非常精妙,用起来既高效又直观。下面咱们就一步步来,看看怎么在CentOS上搭建环境并写出你的第一个并发程序。
第一步,当然是得先把Go语言环境给装上。如果你的CentOS系统里还没有,跟着下面这几行命令走就行:
# 下载Go语言安装包
wget https://golang.org/dl/go1.20.4.linux-amd64.tar.gz
# 解压安装包到/usr/local目录
sudo tar -C /usr/local -xzf go1.20.4.linux-amd64.tar.gz
# 配置环境变量
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc
# 验证安装
go version
跑完最后一句go version,如果能看到版本号蹦出来,那就恭喜你,环境搞定了一半。
环境好了,接下来得有个地方写代码。创建一个专属的项目目录,并且初始化Go模块,这样管理依赖会方便很多:
mkdir myconcurrencyproject
cd myconcurrencyproject
go mod init myconcurrencyproject
重头戏来了。在项目里创建一个main.go文件,然后把下面的代码贴进去。这个例子展示了如何使用Goroutines和WaitGroup来并发执行多个“工人”任务:
package main
import (
"fmt"
"sync"
"time"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done()
fmt.Printf("Worker %d starting\n", id)
time.Sleep(time.Second)
fmt.Printf("Worker %d done\n", id)
}
func main() {
var wg sync.WaitGroup
// 启动多个Goroutines
for i := 1; i <= 5; i++ {
wg.Add(1)
go worker(i, &wg)
}
// 等待所有Goroutines完成
wg.Wait()
fmt.Println("All workers done")
}
代码写好了,跑起来看看效果。在终端里输入:
go run main.go
你会看到五个“工人”几乎同时开始工作,又在一秒后陆续完成任务,最后主程序收到“全部完成”的信号。这就是并发最直观的体现。
这里用到了两个核心概念:
go关键字就能启动,开销极小,由Go运行时自己管理调度。wg.Add(1)是发任务牌,wg.Done()是交还任务牌,wg.Wait()则像个监工,一直等到所有任务牌都收回来才放行。光能同时跑任务还不够,任务之间还得能“对话”。这就是Channel的用武之地了,它是Goroutines之间通信和同步的桥梁。再看一个生产者和消费者的例子:
package main
import (
"fmt"
"sync"
"time"
)
func producer(ch chan<- int) {
for i := 1; i <= 5; i++ {
ch <- i
time.Sleep(time.Second)
}
close(ch)
}
func consumer(ch <-chan int, wg *sync.WaitGroup) {
defer wg.Done()
for num := range ch {
fmt.Printf("Received: %d\n", num)
}
}
func main() {
ch := make(chan int)
var wg sync.WaitGroup
wg.Add(2)
go producer(ch)
go consumer(ch, &wg)
wg.Wait()
fmt.Println("Done")
}
这段代码又引入了新玩法:
chan<- int和<-chan int,这可不是随便写的。前者定义了一个“只发送”通道,后者定义了一个“只接收”通道。这种单向Channel的用法,能在编译阶段就帮我们避免很多数据竞争的错误,让代码更安全。走完这几个步骤,你应该就能在CentOS上轻松驾驭Go的并发编程了。Go的这套并发模型,强大就强大在它把复杂的并发控制抽象成了几个简单易懂的原语,用起来顺手,效率也高,非常适合处理各种需要并发的场景。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9