Junior — Middle
How are goroutines implemented and managed in Go?
sobes.tech AI
Answer from AI
Goroutines in Go are lightweight execution threads managed by the Go runtime, not the operating system. They allow writing concurrent code with minimal resource overhead.
Main points of goroutine implementation and management:
- Creation: A goroutine is launched using the
gokeyword before a function call. - Scheduler: The Go runtime has its own scheduler that distributes goroutines across system threads (M:N scheduling).
- Stack: Goroutines have a dynamic stack that can grow and shrink as needed, starting from a few kilobytes.
- Communication: Channels are used for synchronization and data exchange between goroutines.
Example of creating a goroutine:
func sayHello() {
fmt.Println("Hello from goroutine")
}
func main() {
go sayHello() // launches a goroutine
time.Sleep(time.Second) // wait for goroutine to finish
}
Thus, goroutines are an efficient way to perform parallel execution of code with minimal overhead.