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 :
Avec la ligne des | = exécution, et la ligne des X = thread en attente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20A Appel ---- B | | | X | X | X | X | X | X | X | X Fin | | | | | | | | Fin
Ce que je souhaiterais avoir est ceci :
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 
2
3
4
5
6
7
8
9
10
11
12
Sans effet notable, le thread A bloque toujours le thread B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part QThread::currentThread()->setPriority(QThread::IdlePriority);
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.

 

 
		
		 
         
 

 
			
			


 
  
  
  
 
 
			 
   
 


 Main thread qui bloque un autre thread
 Main thread qui bloque un autre thread
				 Répondre avec citation
  Répondre avec citation
Partager