Junior — Middle
Explain the concept of task separation between multiple threads or processes for system optimization. What does the term Work-Sharing mean?
sobes.tech AI
Answer from AI
Work-Sharing is a concept of distributing tasks among multiple threads or processes to improve system efficiency and productivity. Instead of one thread performing all the work sequentially, tasks are divided into parts that are processed in parallel by different executors.
In Go, for example, this is implemented using goroutines and channels, where several goroutines can collaboratively process a set of tasks, distributing the load and reducing execution time.
Example 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("Worker %d processing job %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()
}
Here, several workers (threads) collaboratively process a queue of tasks, which speeds up execution compared to sequential processing.