Go语言以其简洁高效的并发模型闻名于世,其中的核心便是轻量级线程——Goroutine。本篇博客将深入浅出地介绍Goroutine的基本概念、创建方式及其在面试中的常见问题与易错点,并通过代码示例阐述如何避免这些问题。
1. Goroutine简介
Goroutine是Go语言实现并发的关键组件,是一种轻量级的执行单元,由Go运行时管理。相较于操作系统原生线程,Goroutine的创建和销毁成本更低,且能实现数万个并发执行,极大地提升了程序的并发性能。
并发与并行
并发是指在同一时间段内执行多个任务的能力,即使在单核处理器上也能通过时间片轮转实现。并行则是指同时在多个处理器核心上执行多个任务。Go语言的Goroutine机制使得程序既能实现并发,又能在多核处理器上充分利用硬件资源实现并行。
2. 创建Goroutine
在Go语言中,创建一个Goroutine只需在函数调用前加上关键字go
即可:
func sayHello(name string) {
fmt.Printf("Hello, %s!\n", name)
}
func main() {
go sayHello("Alice") // 启动一个Goroutine执行sayHello("Alice")
go sayHello("Bob"