Bonsoir,

Cela fait quelques temps que je réfléchis à un problème auquel je ne trouve pas la réponse, je viens donc vers vous pour cela. J'expose le problème :
Soient deux threads, le thread A et le thread B. Le thread A correspond au main thread de l'application, le thread B correspond à un thread des plus communs. Avant d'effectuer une longue boucle, le thread A lance le thread B qui doit effectuer des opérations pendant toute la durée d'exécution de la boucle dont il est question. Or, le thread A ne va logiquement pas laisser le thread B agir, utilisant la totalité des ressources dont l'application peut bénéficier, on aura donc une ligne d'exécution en fonction du temps comme celle-ci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  A
 Appel ---- B
  |         |
  |         X
  |         X
  |         X
  |         X
  |         X
  |         X
  |         X
  |         X
 Fin        |
            |
            |
            |
            |
            |
            |
            |
           Fin
Avec la ligne des | = exécution, et la ligne des X = thread en attente.
Ce que je souhaiterais avoir est ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
  A
 Appel ---- B
  |         |
  |         |
  |         |
  |         |
  |         |
  |         |
  |         |
  |         |
  |         |
 Fin       Fin
Pour éviter que le thread A bloque le thread B durant la grosse boucle, j'ai pensé à tenter de lui baisser sa priorité :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
QThread::currentThread()->setPriority(QThread::IdlePriority);
Sans effet notable, le thread A bloque toujours le thread B.
J'ai tenté pas mal d'autres choses, sans succès non plus. Bref, si vous avez une idée, si vous manquez d'informations ou autre, n'hésitez pas à poster !

Merci d'avance,
Amnell.