5.4. Communication entre les fils d'Anaconda


Certaines des actions que vous devez effectuer au cours du processus d'installation peuvent prendre beaucoup de temps. Par exemple, l'analyse des disques à la recherche de partitions existantes ou le téléchargement des métadonnées des paquets. Pour vous éviter d'attendre et rester réactif, Anaconda exécute ces actions dans des threads distincts.

La boîte à outils Gtk ne prend pas en charge les changements d'éléments à partir de plusieurs fils d'exécution. La boucle événementielle principale de Gtk s'exécute dans le thread principal du processus Anaconda processus. Par conséquent, toutes les actions relatives à l'interface graphique doivent être effectuées dans le thread principal. Pour ce faire, il faut utiliser GLib.idle_add, ce qui n'est pas toujours facile ou souhaitable. Plusieurs fonctions d'aide et décorateurs définis dans le module pyanaconda.ui.gui.utils peuvent ajouter à la difficulté.

Les décorateurs @gtk_action_wait et @gtk_action_nowait modifient la fonction ou la méthode décorée de telle sorte que lorsque cette fonction ou cette méthode est appelée, elle est automatiquement mise en file d'attente dans la boucle principale de Gtk qui s'exécute dans le fil d'exécution principal. La valeur de retour est soit renvoyée à l'appelant, soit abandonnée, respectivement.

Dans une communication entre un rayon et un moyeu, un rayon annonce qu'il est prêt et qu'il n'est pas bloqué. La file d'attente de messages hubQ gère cette fonction et vérifie périodiquement la boucle d'événements principale. Lorsqu'un rayon devient accessible, il envoie un message à la file d'attente annonçant le changement et le fait qu'il ne doit plus être bloqué.

Il en va de même lorsqu'un rayon doit actualiser son statut ou compléter un drapeau. Le hub Configuration and Progress dispose d'une file d'attente différente, appelée progressQ, qui sert à transférer les mises à jour de l'état d'avancement de l'installation.

Ces mécanismes sont également utilisés pour l'interface textuelle. En mode texte, il n'y a pas de boucle principale, mais la saisie au clavier prend la majeure partie du temps.

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.