La principale différence entre interprocess_semaphore
et named_semaphore
est que le interprocess_semaphore
est partagé avec l'aide de la mémoire partagée, alors que named_semaphore
n'a pas besoin d'être construit (en utilisant construction) ou stockées dans la mémoire partagée comme référencée par son nom au lieu de façon anonyme . Les méthodes de synchronisation nommées utilisent différents objets pour accéder à la même ressource, mais utilisent la même ressource, où les méthodes de synchronisation anonyme doivent partager le même objet dans shared_memory ou un autre mécanisme pour accéder à la même ressource.
Cela signifie que named_semaphore
a 3 constructeurs qui ouvrent ou créent la méthode de synchronisation référencée, par rapport à interprocess_semaphore
qui n'a que 1 constructeur.
Les deux types de sémaphores implémentent post
, wait
, try_wait
et timed_wait
comme prévu. Des informations supplémentaires sont disponibles here et here.
Un exemple d'utilisation named_semaphore
est disponible here
je jeter un oeil à votre lien bientôt ... Merci. – Pietro
Je suis confus par ceci: "Les deux types de sémaphore implémentent wait, notify_one et notify_all comme prévu." Je n'ai jamais vu de sémaphore qui implémente quelque chose comme "notify_all". Il semble que ces sémaphores Boost implémentent post, wait, try_wait et timed_wait. Est-ce ce que vous vouliez dire, ou est-ce que je manque quelque chose? –
Vous avez décrit named_condition, qui n'est pas la même chose que named_semaphore. – Jon