Sobes.tech
Senior

What is the disadvantage of goroutines?

sobes.tech AI

Answer from AI

Goroutines in Go are very lightweight threads, but they have their drawbacks:

  • Lack of control over the scheduler: Goroutines are scheduled by the Go runtime, and the developer cannot directly manage their priorities or execution time.
  • Memory: Each goroutine uses a stack (starting with a few kilobytes and can grow), which is small compared to OS threads, but a large number of goroutines can lead to significant memory consumption.
  • Debugging and profiling: Due to the large number of goroutines and their dynamic scheduling, it is more difficult to debug data races and performance issues.
  • Potential leaks: If a goroutine blocks or does not finish, it can lead to resource leaks that are hard to track.

Example:

func main() {
    for i := 0; i < 1000000; i++ {
        go func(n int) {
            // Some work
            fmt.Println(n)
        }(i)
    }
    time.Sleep(time.Second)
}

Here, a million goroutines can cause significant memory and CPU load.

What is the disadvantage of goroutines? — Golang - sobes.tech