Bonjour,
J'ai X threads qui communiquent via Message queue. Une émet, les autre reçoivent (chaque récepteur ayant sa propre message queue). Dans certains cas, l'émetteur est plus rapide que le récepteur. Du coup, la message queue se remplit jusqu'à être pleine.
Pour gérer ce genre de problème, je me suis dit que je pouvais jouer avec les priorités des deux threads en question. En y réfléchissant, je vois trois solutions:
- Côté émetteur: lorsque la message queue est pleine ou un peu avant, diminuer sa priorité en la rendant inférieur à la tâche réceptrice.
Problème: Comment réhausser la priorité, sachant que j'ai perdu la main puisque l'émetteur n'est plus prioritaire.
- Côté récepteur: lorsque la message queue est pleine ou un peu avant, augmenter sa priorité.
Problème: Entre le moment ou je décide de l'augmenter, il se peut que l'émetteur ai essayé d'envoyer plusieurs messages. Ce problème pourrait être résolu en décidant de changer la priorité du récepteur AVANT que la message queue ne soit pleine.
- En utilisant une tierce thread, de haute priorité, qui s'occuperait de gérer la priorité des autres theads.
En bref, je vois plusieurs solutions mais je me demande laquelle est utilisée dans la pratique.
Cordialement,
Julien.
Partager