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 θα δουν είτε την παλιά είτε τη νέα τιμή, αλλά όχι μια ενδιάμεση.