Preskoči na glavni sadržaj
🔒 Način pregleda. Prvih petnaest Foundations lekcija je besplatno; ova je Pro. Pokrenite 7-dnevni trial da otključate editor, AI savjete i ostatak programa. Kartica obavezna, otkažite bilo kada u Dashboard.Pokreni 7-dnevni trial →
← KolegijiSenior Deep-DivesModule 8 · Async correctness patternsasyncio.Lock — FIFO-fair, NOT reentrant, cancellation-safepredict130 / 161
+150 XP
Zadatak
📝 **Zadatak:** Predvidite točan rezultat. Tri zadatka pod nazivom A/B/C raspoređena su putem skupa. Svaki stječe bravu, obavlja neki posao i otpušta. A drži 20ms; B i C držite po 10 ms svaki. Predvidite 6 događaja redoslijedom kojim se aktiviraju. 📋 Implementirajte gornju funkciju. Testovi se pokreću automatski. 💡 **Savjet:** Ponovno pročitajte teoriju ako zapnete.
Predvidi izlaz

Pažljivo pročitaj kod

import asyncio


events: list[str] = []


async def critical(lock: asyncio.Lock, name: str, work: float) -> None:
    async with lock:
        events.append(f"{name} acquired")
        await asyncio.sleep(work)
        events.append(f"{name} releasing")


async def main() -> None:
    lock = asyncio.Lock()
    await asyncio.gather(
        critical(lock, "A", 0.02),
        critical(lock, "B", 0.01),
        critical(lock, "C", 0.01),
    )
    for e in events:
        print(e)


asyncio.run(main())

Što će program ispisati? Napiši ovdje:

💬 Rasprava

Budi prvi — postavi pitanje ili podijeli savjet.
Prijavi se kako bi se pridružio raspravi. Čitanje je besplatno.
Učitavanje rasprave…