Junior — Middle
Χρησιμοποιήσατε το μηχανισμό σημαφόρου στα έργα σας για τη διαχείριση του ανταγωνισμού πόρων;
sobes.tech AI
Απάντηση από AI
Ναι, ο μηχανισμός σερβοφάρο συχνά χρησιμοποιείται για τη διαχείριση της πρόσβασης σε περιορισμένους πόρους σε εφαρμογές πολλαπλών νημάτων. Στο iOS, για παράδειγμα, μπορεί να χρησιμοποιηθεί το DispatchSemaphore για τον περιορισμό του αριθμού των ταυτόχρονων εργασιών.
Παράδειγμα χρήσης του DispatchSemaphore:
let semaphore = DispatchSemaphore(value: 2) // επιτρέπει 2 εργασίες ταυτόχρονα
DispatchQueue.global().async {
semaphore.wait() // μειώνει τον μετρητή, περιμένει αν είναι 0
// κρίσιμη ενότητα
print("Εργασία ξεκίνησε")
sleep(2) // προσομοίωση εργασίας
print("Εργασία ολοκληρώθηκε")
semaphore.signal() // αυξάνει τον μετρητή
}
Αυτή η προσέγγιση βοηθά στην αποφυγή συνθηκών αγώνα και στον έλεγχο του ανταγωνισμού κατά την εργασία με περιορισμένους πόρους, π.χ., κατά την πρόσβαση σε βάση δεδομένων ή αιτήματα δικτύου.