Comment voulez-vous mettre en œuvre un événement de base de la boucle?

Si vous avez travaillé avec les kits graphiques, vous savez qu'il ya un événement de la boucle principale de la boucle qui doit être exécutée après avoir tout fait, et qui permettra de garder l'application en vie et en réponse à différents événements. Par exemple, pour Qt, vous voulez faire cela dans main():

int main() {
    QApplication app(argc, argv);
    //init code
    return app.exec();
}

Qui, dans ce cas, app.exec() est l'application principale de la boucle.

Le moyen le plus évident à mettre en œuvre ce genre de boucle serait:

void exec() {
    while (1) {
        process_events(); //create a thread for each new event (possibly?)
    }
}

Mais cela limite le CPU à 100% et n'est pratiquement inutile. Maintenant, comment puis-je mettre en œuvre un tel événement boucle qui est sensible sans manger le CPU en tout?

Réponses sont appréciées en Python et/ou C++. Merci.

Note de bas de page: Pour l'amour de l'apprentissage, je vais mettre en place mes propres signaux/slots, et je voudrais les utiliser pour générer des événements personnalisés (par exemple,go_forward_event(steps)). Mais si vous savez comment je peux utiliser le système manuellement des événements, je voudrais savoir en parler.

  • Je crois que vous pouvez vous plonger dans le code source de Qt et de voir exactement ce qu'ils font dans exec(). Ce serait probablement vous donner quelques bons conseils.
InformationsquelleAutor fengshaun | 2009-03-18