Question

est un mécanisme IPC en utilisant la mémoire partagée et les sémaphores pour simplex de synchronisation comme des tuyaux ou des duplex comme des files d'attente de messages?

Était-ce utile?

La solution

Si ma compréhension de votre question est correcte, il est recto-verso.

Avec la mémoire partagée, les deux processus peuvent communiquer dans les deux sens, non seulement avec un comme le lecteur et l'un comme l'écrivain. Les tuyaux ne permettent que soit la lecture ou l'écriture, mais vous pouvez surmonter ce problème en utilisant deux tubes (bien que les files d'attente de messages sont une meilleure option).

Autres conseils

A sémaphores fonctionne comme ça ... proc a: « La ressource est-elle disponible? » sémaphores = -2 Oui. ++ sémaphores proc b: "La ressource est ..." sémaphores = -1 Oui. ++ sémaphores proc c: "est la ressource ..." sémaphores = 0 Non (rien ne se passe)

à ce point, c proc peut mettre en attente (en fonction de votre api, cela pourrait être une boucle occupée ou il pourrait être un rappel, ou vous pouvez simplement frayer un fil d'attente et écrire votre propre rappel)

proc a: sémaphores "im fait" -;

proc c remarqueront que sémaphores est disponible, par quelque chose probablement similaire à ce que je l'ai mentionné précédemment.

la raison pour laquelle je l'ai écrit tout ce qui est sur que je puisse dire, ses deux. Son comme une file d'attente de messages dans ce que vous pouvez avoir les threads en attente sur une ressource (mémoire partagée contrôlée par un sémaphores) qui déclenchent une action, même un message système réel, quand ils la ressource. Ou vous pouvez simplement une boucle d'attente jusqu'à ce qu'il soit fait, et ce serait comme la tuyauterie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top