Selon les anciennes versions de la norme POSIX, la première méthode avec un initialisateur n'est garantie de fonctionner qu'avec des variables allouées statiquement, et non lorsque la variable est un auto
variable qui est définie dans le corps d'une fonction. Bien que je n'aie jamais vu de plate-forme où cela ne serait pas autorisé, même pour les fonctions auto
et cette restriction a été supprimée dans la dernière version de la norme POSIX.
En static
est vraiment préférable, car elle permet d'écrire du code d'amorçage beaucoup plus facilement. Chaque fois qu'au moment de l'exécution vous entrez dans un code qui utilise un tel mutex, vous pouvez être assuré que le mutex est initialisé. C'est une information précieuse dans un contexte de multithreading.
La méthode utilisant une fonction init est préférable lorsque vous avez besoin de propriétés spéciales pour votre mutex, comme être récursif par exemple ou être partageable entre processus, et pas seulement entre threads.