Junior — Middle
Leg uit wat het concept van taakverdeling tussen meerdere threads of processen betekent om het systeemwerk te optimaliseren. Wat betekent de term Work-Sharing?
sobes.tech AI
Antwoord van AI
Work-Sharing is een concept waarbij taken worden verdeeld tussen meerdere threads of processen om de efficiëntie en prestaties van het systeem te verbeteren. In plaats van dat één thread al het werk sequentieel uitvoert, worden taken opgesplitst in delen die parallel worden verwerkt door verschillende uitvoerders.
In Go wordt dit gerealiseerd met behulp van goroutines en kanalen, waarbij meerdere goroutines gezamenlijk een takenpakket kunnen verwerken, de belasting verdelen en de uitvoeringstijd verkorten.
Voorbeeld in Go:
package main
import (
"fmt"
"sync"
)
func worker(id int, jobs <-chan int, wg *sync.WaitGroup) {
defer wg.Done()
for j := range jobs {
fmt.Printf("Werker %d verwerkt taak %d\n", id, j)
}
}
func main() {
jobs := make(chan int, 5)
var wg sync.WaitGroup
for w := 1; w <= 3; w++ {
wg.Add(1)
go worker(w, jobs, &wg)
}
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
wg.Wait()
}
Hier verwerken meerdere werkers (threads) gezamenlijk een takenwachtrij, wat de uitvoering versnelt in vergelijking met sequentiële verwerking.