Junior — Middle
Írja le, hogyan épültek fel és irányították a munkafolyamatokat a korábbi szervezetében.
sobes.tech MI
Válasz az MI-től
A korábbi szervezetben a munkafolyamatokat goroutine-okat és csatornákat használva építették fel Go-ban, hogy hatékonyan kezeljék a párhuzamos feladatokat.
Főbb pontok:
- Minden feladat külön goroutine-ban indult, lehetővé téve több folyamat egyidejű végrehajtását.
- Csatornákat használtak az adatok szinkronizálására és átadására a goroutine-ok között, biztosítva a biztonságos információcserét.
- A munka befejezésének ellenőrzésére a
sync.WaitGroup-ot használták, hogy várják minden goroutine befejeződését.
Példa:
var wg sync.WaitGroup
jobs := make(chan int, 10)
worker := func(id int, jobs <-chan int, wg *sync.WaitGroup) {
defer wg.Done()
for job := range jobs {
fmt.Printf("Munkás %d feldolgozza a %d feladatot\n", id, job)
// feladat feldolgozása
}
}
func main() {
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()
}
Így a folyamatokat munkáspoolként szervezték, akik párhuzamosan dolgozták fel a beérkező feladatokat.