Junior — Middle
Ποια μέθοδοι χρησιμοποιούνται για την οργάνωση ασφαλούς και κοινής πρόσβασης των κορουτινών σε έναν πόρο;
sobes.tech AI
Απάντηση από AI
Για ασφαλή και κοινή πρόσβαση των coroutine σε έναν πόρο στο Android (Kotlin), συνήθως χρησιμοποιούνται οι ακόλουθες μέθοδοι:
- Mutex από το kotlinx.coroutines — διασφαλίζει αμοιβαία αποκλεισμό, επιτρέποντας μόνο σε μία coroutine ταυτόχρονα να έχει πρόσβαση στον πόρο.
- Channel — για τη μεταφορά δεδομένων μεταξύ coroutine, βοηθώντας στην αποφυγή άμεσης κοινής πρόσβασης.
- Ατομικές λειτουργίες — για απλές περιπτώσεις, όταν χρειάζεται να ενημερώσετε με ασφάλεια primitive τιμές.
Παράδειγμα χρήσης του Mutex:
val mutex = Mutex()
var κοινόςΠόρος = 0
suspend fun ασφαλήςΑύξηση() {
mutex.withLock {
κοινόςΠόρος++
}
}
Αυτή η προσέγγιση αποτρέπει τις συνθήκες αγώνα και διασφαλίζει σωστή συμπεριφορά κατά την παράλληλη εκτέλεση των coroutine.