Junior — Middle
Jak je zajištěna práce a synchronizace vláken provádění v Golang?
sobes.tech AI
Odpověď od AI
在Go语言中,使用goroutines(轻量级线程,由Go的运行时管理)来处理执行流。goroutines通过在函数调用前加上go关键字启动,从而实现异步执行。
为了同步goroutines,使用通道(channels)和sync包中的原语(如Mutex、WaitGroup)。通道提供了goroutines之间安全的数据交换,并允许它们同步。
使用goroutines和通道的示例:
package main
import (
"fmt"
"time"
)
func worker(ch chan string) {
time.Sleep(time.Second)
ch <- "完成"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println("goroutine的工作:", msg)
}
这里,主goroutine启动了worker在一个单独的goroutine中,经过延迟后向通道发送消息。主goroutine等待接收通道中的消息,从而实现同步。