Sobes.tech
Junior — Middle

Kann eine Struktur mit zwei Feldern als sicher für die Verwendung in Multithread-Umgebungen angesehen werden?

sobes.tech KI

Antwort von AI

Eine Struktur mit zwei Feldern in Go ist an sich nicht thread-sicher. Ohne zusätzliche Synchronisation kann der Zugriff auf die Felder der Struktur durch mehrere Goroutines zu Race Conditions führen.

Wenn die Felder der Struktur nach der Initialisierung nicht geändert werden (d.h. die Struktur ist unveränderlich), ist sie sicher für den Lesezugriff aus mehreren Threads.

Wenn die Felder geändert werden können, muss man Synchronisationsmechanismen wie sync.Mutex oder sync.RWMutex verwenden, um die Sicherheit zu gewährleisten.

Beispiel mit Mutex:

import "sync"

type SafeStruct struct {
    mu sync.Mutex
    field1 int
    field2 string
}

func (s *SafeStruct) Set(field1 int, field2 string) {
    s.mu.Lock()
    defer s.mu.Unlock()
    s.field1 = field1
    s.field2 = field2
}

func (s *SafeStruct) Get() (int, string) {
    s.mu.Lock()
    defer s.mu.Unlock()
    return s.field1, s.field2
}

Auf diese Weise garantiert die Struktur selbst keine Sicherheit, sie muss speziell geschützt werden.