Bonjour,
J'ai hésité à poster ce sujet ici.
Voilà mon problème.
Supposons qu'on ait d'une part une application multithreadée en C++ et d'autres part des librairies partagées réalisées et compilées par moi même.
Chaque thread charge une librairie et exploite les symboles(les méthodes) contenues dans cette librairie.
Chaque thread créée par le programme principal reçoit donc en paramètre un identifiant qui lui permet de déterminer quelle librairie charger.
Les threads effectuent donc exactement le même type de traitement à l'aide d'une méthode surchargée contenue dans chacune de ces librairies.
J'ai deux questions:
1) Pour l'instant je charge les librairies au niveau de chaque thread à l'aide de libdl.
Est-ce que cela revient au même si je fais charger toutes les librairies au niveau de mon programme principal? Autrement dit est ce que les symboles des librairies chargées par le programme principal seront visibles par mes threads?
2) Le programme reçoit souvent un segmentation fault lorsque les threads essaient d'accéder aux mêmes symboles.
Comment rendre mes librairies dynamiques threadsafe (que plusieurs threads puissent y accéder en même temps)?
Je vous remercie d'avance en espérant avoir été assez clair dans la description de mon problème.
Partager