Junior — Middle
How is goroutine management implemented in the Go programming language?
sobes.tech AI
Answer from AI
In the Go language, goroutine management is performed using the keyword go, which launches a function or method in a lightweight thread of execution — a goroutine. A goroutine can be considered an analog of a thread, but it is much lighter in resources and is managed by the Go scheduler.
For synchronization and communication between goroutines, channels (chan) are usually used, which allow safe data transfer between goroutines.
Example of launching a goroutine and using a channel:
package main
import (
"fmt"
"time"
)
func worker(ch chan string) {
time.Sleep(time.Second)
ch <- "done"
}
func main() {
ch := make(chan string)
go worker(ch) // launching goroutine
msg := <-ch // waiting for message from channel
fmt.Println(msg)
}
To manage the lifetime of goroutines and their cancellation, contexts (context.Context) are often used.
Thus, goroutine management in Go involves launching with go, communication via channels, and coordination through contexts.