Sobes.tech
Middle

Czym różni się konkurencyjność od równoległości?

sobes.tech AI

Odpowiedź od AI

Współbieżność to zdolność systemu do zarządzania wieloma zadaniami, które mogą być wykonywane częściowo jednocześnie, przełączając się między nimi. Równoległość to jednoczesne wykonywanie wielu zadań na różnych rdzeniach procesora.

Prościej mówiąc, współbieżność dotyczy organizacji pracy tak, aby kilka zadań mogło postępować, podczas gdy równoległość odnosi się do ich jednoczesnego wykonywania.

W Go współbieżność osiąga się za pomocą gorutyn i kanałów, a równoległość — gdy te gorutiny są faktycznie wykonywane jednocześnie na różnych rdzeniach procesora.

Przykład współbieżności w Go:

package main
import (
    "fmt"
    "time"
)
func task(name string) {
    for i := 0; i < 3; i++ {
        fmt.Println(name, "krok", i)
        time.Sleep(100 * time.Millisecond)
    }
}
func main() {
    go task("A")
    go task("B")
    time.Sleep(500 * time.Millisecond)
}

Tutaj zadania "A" i "B" są wykonywane współbieżnie, przełączając się między sobą, a jeśli uruchomimy je na wielordzeniowym procesorze, mogą być wykonywane równolegle.