并发编程是 Go 语言的一大特色,它让开发者能够轻松地编写高效的并发程序。本教程将带你入门 Go 语言并发编程。
什么是并发?
并发指的是同时执行多个任务的能力。在 Go 语言中,并发主要依靠 goroutines 和 channels 来实现。
Goroutines
Goroutine 是 Go 语言并发编程的核心。它是轻量级的线程,由 Go 运行时管理。
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("Hello from goroutine!")
}()
wg.Wait()
}
Channels
Channel 是用于在 goroutines 之间通信的机制。
package main
import (
"fmt"
"time"
)
func main() {
messages := make(chan string)
go func() {
for i := 0; i < 10; i++ {
messages <- "message " + fmt.Sprintf("%d", i)
time.Sleep(1 * time.Second)
}
close(messages)
}()
for msg := range messages {
fmt.Println(msg)
}
}
WaitGroup
sync.WaitGroup
用于等待多个 goroutines 完成。
package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go func(id int) {
defer wg.Done()
fmt.Println("Worker", id, "is working")
time.Sleep(time.Duration(id) * time.Second)
}(i)
}
wg.Wait()
}
本站推荐
更多关于 Go 语言并发编程的教程,请访问我们的 并发编程教程 页面。
总结
Go 语言的并发编程非常简单,通过 goroutines 和 channels,你可以轻松地编写高效的并发程序。希望这个教程能帮助你入门 Go 语言并发编程。