Ποια μέθοδος συγχρονισμού χρησιμοποιείται για την εξασφάλιση κοινής πρόσβασης σε μια μεταβλητή κατά την ανάγνωση και την εγγραφή;
sobes.tech AI
Απάντηση από AI
Για να διασφαλίσετε ασφαλή κοινή πρόσβαση σε μια μεταβλητή κατά την ανάγνωση και την εγγραφή σε iOS, συχνά χρησιμοποιούνται οι ακόλουθες μέθοδοι συγχρονισμού:
-
Αποθέματα Dispatch (GCD): οι σειριακές ουρές (
DispatchQueue) επιτρέπουν την εκτέλεση λειτουργιών με σειρά, αποτρέποντας τις συνθήκες αγώνα. Για παράδειγμα, μπορείτε να χρησιμοποιήσετεDispatchQueue.syncήDispatchQueue.asyncμε μια σειριακή ουρά. -
NSLock και άλλα αντικείμενα κλειδώματος:
NSLock,NSRecursiveLock,NSConditionεπιτρέπουν το ρητό κλείδωμα της πρόσβασης σε έναν πόρο. -
@synchronized (σε Objective-C): κατασκευή σύνταξης για το κλείδωμα κώδικα.
-
Ατομικές ιδιότητες: σε Objective-C, μπορείτε να δηλώσετε ιδιότητες ως
atomic, αλλά αυτό δεν είναι πάντα αρκετό για πολύπλοκες λειτουργίες. -
Κλειδώματα αναγνώστη-συγγραφέα: για παράδειγμα,
pthread_rwlock_tγια διαχωρισμό της πρόσβασης σε ανάγνωση και εγγραφή.
Παράδειγμα χρήσης DispatchQueue για συγχρονισμό πρόσβασης σε μια μεταβλητή:
class ThreadSafeCounter {
private var value = 0
private let queue = DispatchQueue(label: "com.example.counterQueue")
func increment() {
queue.sync {
value += 1
}
}
func getValue() -> Int {
return queue.sync { value }
}
}