# `async_loop_singleton.py`

## Scopo

Questo modulo mantiene un loop asyncio globale e condiviso, eseguito su un thread dedicato.

## Flusso

            flowchart TD
        A["Chiamata a get_global_loop()"] --> B{"Loop gia presente?"}
        B -- Si --> C["Ritorna loop esistente"]
        B -- No --> D["Crea Event ready"]
        D --> E["Avvia thread daemon"]
        E --> F["_run()"]
        F --> G["new_event_loop()"]
        G --> H["set_event_loop(loop)"]
        H --> I["ready.set()"]
        I --> J["loop.run_forever()"]
        J --> K["Ritorna loop al chiamante"]

## Chiusura

            flowchart TD
        A["stop_global_loop()"] --> B{"Loop attivo?"}
        B -- No --> C["Nessuna azione"]
        B -- Si --> D["call_soon_threadsafe(loop.stop)"]
        D --> E["join del thread"]
        E --> F["Azzera riferimenti globali"]

## Note

- E un helper minimale usato da `main.py`.

- Il modulo esiste separato da `gestione_aree_frame_async.py`, ma concettualmente svolge lo stesso ruolo di gestione del loop condiviso.