Bonjour à tous,
Définition de l'environnement :
j'ai une application d'impression qui reçoit via TCP/IP des messages provenant d'une autre application (et une seule) pour lui dire ce qu'elle doit imprimer.
Mon application arrive bien à recevoir ces messages TCP/IP et à tous les traiter. J'utilise des composants Indy10 et notamment le composant TidTCPServer.
Jusque là tout va bien, sauf lorsque plusieurs messages arrivent (pour imprimer plusieurs pages) il arrivent que celles çi sortent dans le désordre. (Exemple : Page 1, Page 3 et Page 2).
Ceci est du au fait que pour chaque message TCP/IP reçu, un thread est créé. Pour gérer les exclusions mutuelles, je suis passé par une section critique et donc chaque thread créé est en attente de libération de la section. Et donc c'est le premier qui arrive à la vérouiller qui gagne.
Ma question est : Comment faire pour modifier ce genre de comportement. En gros comment faire pour que les messages reçu par le composant TidTCPServer se dépile dans l'ordre de réception?
J'ai bien essayé de passr par une Fifo et stocker les messages TCP/IP dès le réception et de libérer la section juste derrière, mais le problème persiste.
Avis aux experts threads ou toute bonne ame qui aurait une idée. j'espère que j'aurais été suffisement clair, mais je suis disponible pour plus de précision.
Merci d'avance de vos réponses.
Partager