• [^] # Re: Eh ben...

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Haiku se lâche enfin. Évalué à 10.

    Malhereusement non!
    La plupart des frameworks ont un seul thread qui fait tout.

    Dans BeOS et dans Haiku, la moindre application a au moins 3 threads:
    - Le thread de l'application, qui fait les traitements longs
    - Le thread de la fenêtre, qui répond aux actions de l'utilisateur
    - Et un thread dans le serveur graphique, qui dessine la fenêtre

    Alors oui, c'est possible de faire la même chose avec d'autres frameworks, mais c'est tout un bazar (avec des problèmes de synchronisation) et personne (ou pas beaucoup de gens) ne le fait.

    Les APIs de BeOS et de Haiku sont conçues pour limiter les problèmes. La communication entre ces threads se fait via des messages (similaires aux signaux/slots de Qt) qui permettent d'échanger des données sans avoir à traiteer soi même les problèmes de synchronisation. Donc, quand l'utilisateur clique sur un bouton, le thread de la fenÛêtre réagit au quart de tour (il a rien d'autre à faire, en même temps), et tout ce qu'il fait, c'est transmettre le message:
    - Au thread de l'application: "clic sur le bouton x" (pour lancer un traitement quelconque)
    - Au thread du serveur graphique (pour redessiner le bouton)

    Avec ce système il est difficile d'avoir une fenêtre gelée (à moins de le faire exprès). L'utilisation de la plupart des autres systèmes m'est insupportable avec des curseurs en sablier ou en ballon de plage à chaque clic.