Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Rendu et logique dans des threads séparés  (Lu 3980 fois)

0 Membres et 1 Invité sur ce sujet

Cmdu76

  • Full Member
  • ***
  • Messages: 194
    • Voir le profil
Rendu et logique dans des threads séparés
« le: Juillet 01, 2016, 05:55:38 am »
Bonjour à tous,

Je suis en train d'essayer de séparer rendu et logique dans des threads différents.
Je n'arrive pas totalement à comprendre les mutex et le tutoriel du site sur les threads est un peu trop simple.

Si quelqu'un a un peu de temps peut-il me dire où je dois mettre les mutex dans cet exemple : https://gist.github.com/Cmdu76/0f4d7b579e3a86072782d9d64c3d006f

Ou alors m'expliquer rapidement comment faire. Parce qu'en fait j'ai l'impression que la fenêtre sera bloquée trop souvent et que le multi-threading ne servirait à rien.

Ou encore même un exemple ou un tutoriel un peu plus complexe que celui du site, en anglais ou français peu importe.

Et aussi on m'a dit que la lecture des variables (par exemple : window.isOpen()) ne posaient pas de problèmes thread-safe mais est-ce vrai ? Car ce n'est dit nul part dans les tutoriels que j'ai pu lire.

Merci d'avance pour votre aide !

zimzim

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : Rendu et logique dans des threads séparés
« Réponse #1 le: Juillet 20, 2016, 11:52:12 pm »
Tu as trouvé tes réponses ?

janf

  • Newbie
  • *
  • Messages: 45
    • Voir le profil
Re : Rendu et logique dans des threads séparés
« Réponse #2 le: Novembre 09, 2016, 03:03:42 am »
A mon avis si tu ne comprends pas les mutex tu n'as pas besoin de tutoriels plus complexes, plutôt plus complets. Cherche un tuto qui prend le multithreading de zéro.

Le mutex sert à faire en sorte de protéger différentes parties du programme pour s'assurer qu'elles ne s’exécutent pas en même temps. Donc elles doivent être protégées par le même mutex.

Par exemple si tu as un bout de code qui écrit dans un tableau, et un autre qui lit dans le même tableau, tu ne veux pas que ces deux morceaux de codes puissent s’exécuter en même temps dans deux threads de ton programme. (A moins d'utiliser un conteneur threadsafe.) Ainsi, tu "lock" les morceaux de code à protéger avec le mutex. Lorsqu'un thread lock le mutex, si l'autre thread arrive à la partie du programme qui est protégée par le même mutex, il devra attendre que le mutex soit libéré pour pouvoir le locker à son tour et exécuter la suite du code.

Utilise plutôt des lock que des mutex. Un lock bloque un mutex dans son constructeur et le débloque dans son destructeur. Ainsi en cas d'exception, le lock est détruit et libère automatiquement le mutex, ce qui évite que ton programme reste bloqué.
« Modifié: Novembre 09, 2016, 03:06:04 am par Renardesque »