Sobes.tech
Middle

Πώς λειτουργούν οι ατομικές λειτουργίες;

sobes.tech AI

Απάντηση από AI

Οι ατομικές λειτουργίες είναι λειτουργίες που εκτελούνται ολόκληρες ή καθόλου, χωρίς ενδιάμεσα καταστάσεις ορατές από άλλα νήματα.

Στο Go, το πακέτο sync/atomic παρέχει λειτουργίες για την εκτέλεση τέτοιων λειτουργιών σε μεταβλητές (π.χ., AddInt32, CompareAndSwapInt64). Αυτό επιτρέπει την ασφαλή τροποποίηση τιμών σε περιβάλλοντα ανταγωνισμού χωρίς τη χρήση mutex.

Παράδειγμα:

import (
    "fmt"
    "sync/atomic"
)

func main() {
    var counter int32 = 0
    atomic.AddInt32(&counter, 1) // ατομική αύξηση κατά 1
    fmt.Println(counter) // 1
}

Η ατομικότητα διασφαλίζει ότι η λειτουργία δεν θα διακοπεί και άλλα goroutines θα δουν είτε την παλιά είτε τη νέα τιμή, αλλά όχι μια ενδιάμεση.