Что такое Work-Sharing

«Что такое Work-Sharing» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Work-Sharing в Go — это механизм распределения задач (горутин) между потоками (M) в рантайме. В основе лежит work-stealing алгоритм: если у потока нет задач, он "ворует" их из чужой очереди.

Пример:

func main() {
    for i := 0; i < 100; i++ {
        go func(n int) {
            fmt.Println(n) // Каждая горутина может выполняться на любом потоке
        }(i)
    }
    time.Sleep(time.Second)
}

Ключевые моменты:

  1. Каждый поток (M) имеет локальную очередь горутин
  2. При простое поток ищет работу в других очередях
  3. Минимизирует простои CPU
  4. Автоматически балансирует нагрузку

Это позволяет эффективно использовать многоядерные процессоры без ручного управления потоками.