Main thread qui bloque un autre thread
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:
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:
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:
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.