Je comprends qu'il existe de nombreuses implémentations de pthread_mutex_t, cependant, j'aimerais savoir si la norme est suffisamment spécifique pour qu'il soit possible de partager un pthread_mutex_t entre différentes bibliothèques pthread et de le faire fonctionner correctement.Est-ce que pthread_mutex_t de Posix est compatible avec différentes bibliothèques compatibles les unes avec les autres?
Répondre
Non, seulement si elles se coordonnent pour la compatibilité, et je ne pense pas que quiconque le fasse.
Cela peut arriver même pour une implémentation C: glibc est incompatible avec elle-même entre les versions, et la mise en page pour les versions 32 bits et 64 bits des types est différente. Il existe une contrainte dans le format que les binaires existants avec leurs initialiseurs statiques (PTHREAD_MUTEX_INITIALIZER
et ses variantes) doivent continuer à fonctionner, mais ce qui se passe au moment de l'exécution n'est pas fixe et peut changer en raison de corrections de bugs et d'optimisations. D'un autre côté, l'exigence de compatibilité d'initialisation statique rend difficile la résolution de l'écart de 32 bits/64 bits, malheureusement.