Sobes.tech
Junior — Middle

Hogyan valósulnak meg a feladatok sorban a folyamattervező rendszerben?

sobes.tech MI

Válasz az MI-től

Go-ban a folyamatok ütemezésében (scheduler) a feladatok sorait általában adatstruktúrák, például csatornák (channels) és sorok (queues) segítségével valósítják meg.

Fő módszerek:

  • Csatornák (channels): A Go beépített csatornákat kínál, amelyek lehetővé teszik a feladatok biztonságos átvitelét goroutine-ok között. Egy csatorna FIFO sorként értelmezhető.

  • Sorok szeleteken vagy listákon: Néha összetettebb logika esetén saját implementációkat használnak szeleteken vagy listákon alapuló sorokra mutexekkel a szinkronizáció érdekében.

Egyszerű feladatsorozat példa csatorna használatával:

package main

import (
    "fmt"
    "time"
)

func worker(tasks <-chan int) {
    for task := range tasks {
        fmt.Println("Feladat feldolgozása", task)
        time.Sleep(time.Second) // munka szimuláció
    }
}

func main() {
    tasks := make(chan int, 5) // pufferelt csatorna

    go worker(tasks)

    for i := 1; i <= 10; i++ {
        tasks <- i
        fmt.Println("Hozzáadott feladat", i)
    }
    close(tasks)
    time.Sleep(2 * time.Second)
}

Így a csatornák biztonságos és kényelmes feladatsorokat biztosítanak a ütemező számára.