Nel suo Qt event loop, networking and I/O API talk, Thiago Macieira afferma che la nidificazione di QEventLoop
's dovrebbe essere evitato:Perché si dovrebbe evitare l'annidamento di QEventLoops?
QEventLoop è per l'evento di nidificazione Loops ... Evitate, se potete, perché crea una serie di problemi: le cose potrebbero rientrare , nuove attivazioni di socket o timer che non ti aspettavi.
Qualcuno può espandersi su ciò a cui si riferisce? Mantengo un sacco di codice che utilizza le finestre di dialogo modali che annidano internamente un nuovo ciclo di eventi quando viene chiamato exec()
, quindi sono molto interessato a sapere che tipo di problemi questo può comportare.
Grazie per la risposta. Hai qualche idea su "nuove attivazioni di socket o timer che non ti aspettavi"? – MuchToLearn
@MuchToLearn Questo è ciò che significa reinserire il codice. Il codice in cui si chiama 'exec' può essere, in generale, chiamato di nuovo. L'origine di tali eventi potrebbe essere l'interfaccia utente, ma potrebbero essere timer, socket, eventi della piattaforma nativa, ecc. –
La macchina di stato è come un paradigma mancante per completare la programmazione orientata agli oggetti, funzionale e dichiarativa. – doc