* Nix threads et processus à l’échelle du système mutex

J’ai quelques ressources que je voudrais protéger contre l’utilisation simultanée à la fois par les threads dans le même processus et entre les différents processus. Quelle est la “bonne” façon de le faire dans * nix?

Par exemple, nous voulons écrire dans un fichier à partir d’une application multithread, ce qui, de temps en temps, transforme certains sous-processus. Comment faire en sorte que chaque thread ait un access exclusif au fichier pendant un certain temps? Je cherche une réponse générale, pas quelque chose qui ne fonctionne que pour écrire dans un fichier, car il peut également s’agir d’un segment de mémoire partagée, etc.

Trop générale d’une question, donc une réponse générale.

La solution de synchronisation la plus flexible serait probablement les sémaphores POSIX . Il existe également un vieux et complexe sémaphore SysV IPC , que vous devrez peut-être utiliser en fonction du support de la plate-forme.

Vous pouvez également rechercher les atsortingbuts de locking PTHREAD pour voir si votre plate-forme prend en charge la sémantique partagée.

Si la ressource est globale et que l’access partagé est souhaité, vous devez utiliser des verrous. S’il s’agit d’un thread-local, utilisez un stockage local de thread. S’il peut être local, utilisez un object local.