В чем преимущества goroutines перед OS threads?
sobes.tech AI
Answer from AI
Goroutines have several key advantages over traditional OS threads:
-
Lightweight: a goroutine takes a few kilobytes of memory at startup, whereas an OS thread uses megabytes. This allows thousands or even millions of goroutines to run concurrently.
-
Fast creation and switching: context switching between goroutines is faster because it is managed by the Go runtime, not the OS kernel.
-
Go scheduler: the built-in scheduler efficiently distributes goroutines across available OS threads, optimizing CPU usage.
-
Simple synchronization: Go provides channels and other primitives for safe data exchange between goroutines, simplifying concurrent programming.
Example of creating a goroutine:
func sayHello() {
fmt.Println("Hello from goroutine")
}
func main() {
go sayHello() // runs the function in a separate goroutine
time.Sleep(time.Second) // wait to allow the goroutine to complete
}
Thus, goroutines make writing concurrent code simpler and more efficient than directly using OS threads.