Перейти к основному содержимому
🔒 Режим превью. Первые 15 уроков Foundations — бесплатные; этот — Pro. Запусти 7-дневный trial чтобы открыть редактор, AI-подсказки и остальной курс. Нужна карта, отмена в Dashboard в любой момент.Начать 7-дневный trial →
← КурсыSenior Deep-DivesModule 8 · Async correctness patternsasyncio.Lock — FIFO-fair, NOT reentrant, cancellation-safepredict130 / 161
+150 XP
Задание
📝 **Задание:** Предскажите точный результат. Три задачи с именами A/B/C планируются через сбор. Каждый получает блокировку, выполняет некоторую работу и снимает ее. А держится 20 мс; B и C удерживаются по 10 мс каждый. Предскажите 6 событий в том порядке, в котором они происходят. 📋 Реализуйте функцию выше. Тесты запускаются автоматически. 💡 **Подсказка:** Если вы застряли, перечитайте теорию.
Предскажи вывод

Прочти код внимательно

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())

Что выведет программа? Напиши здесь:

💬 Обсуждение

Будьте первым — задайте вопрос или поделитесь подсказкой.
Войдите чтобы участвовать в обсуждении. Чтение бесплатно.
Загрузка обсуждения…