Junior — Middle
Használta-e a szeminfór mechanizmust projektjeiben az erőforrások versenyének kezelésére?
sobes.tech MI
Válasz az MI-től
Igen, a szemafor mechanizmus gyakran alkalmazott az erőforrásokhoz való hozzáférés kezelésére több szálú alkalmazásokban. Például iOS-en a DispatchSemaphore használható a párhuzamosan futó feladatok számának korlátozására.
A DispatchSemaphore használatának példája:
let semaphore = DispatchSemaphore(value: 2) // engedélyezi 2 feladat egyidejű futtatását
DispatchQueue.global().async {
semaphore.wait() // csökkenti a számlálót, vár, ha 0
// kritikus szekció
print("Feladat indult")
sleep(2) // munka szimuláció
print("Feladat befejeződött")
semaphore.signal() // növeli a számlálót
}
Ez a megközelítés segít elkerülni a versenyhelyzeteket és ellenőrizni a konkurenciát, amikor korlátozott erőforrásokkal dolgozunk, például adatbázis hozzáférés vagy hálózati kérések esetén.