2009-07-31 6 views
0

Je suis confronté à un problème de synchronisation dans le multithreading. J'ai une bibliothèque partagée que les applications utilisent pour construire leurs applications. A partir de la librairie j'ai créé un thread qui écoute la requête à venir et la traite en temps réel. De la librairie j'ai invoqué une API qui est synchrone dans la nature qui attendra que la réponse provienne d'un autre module. Cette API a une certaine dépendance de l'autre module à partir de laquelle la réponse devrait venir après la première réponse. Mais parfois la deuxième réponse arrive en premier donc l'API a échoué et parfois cela fonctionne bien. mutex locks arpit déjà appliqué. Quelqu'un peut-il me dire quelle devrait être l'approche pour résoudre le problème? J'espère que ma question est claire.Multithreading - Synchronisation sous Unix

EDIT: son sur c + unix

+2

Langue/technologie? –

+0

Il peut être utile de savoir quelle version de quel Unix. Cela peut déterminer quelles bibliothèques de threads sont disponibles. –

+0

J'utilise Suse10 – Arpit

Répondre

1

Il contribuerait à améliorer votre question avec un diagramme de séquence de temps.

Quoi qu'il en soit, après votre description du problème peut être: - une bibliothèque n'a pas été conçu pour une utilisation multithread - Toutes les opérations sont bloquées par mutex (une bonne explication de mutex se trouve here) - fil/processus

Si votre seul problème est la commande, vous pouvez également essayer d'améliorer votre API, par exemple en utilisant un numéro de séquence ou un horodatage. De cette façon, votre code peut trouver l'événement le plus tôt.

J'espère que cela aide.