Comment puis-je code un moniteur en C?
J'ai besoin de faire un processus de synchronisation en C. je veux utiliser un moniteur, et j'ai lu beaucoup de choses sur eux. Toutefois, j'ai été incapable de trouver comment mettre en œuvre un programme en C. je les ai vu fait en Java et d'autres langages comme le C++, mais je suis incapable de trouver des exemples dans C.
J'ai regardé à travers le K&R et il n'y a pas d'exemple dans l'. J'ai écrémé par le biais de Systèmes Unix Programmation, de la Communication, de la Simultanéité et de Fils, mais a été incapable de trouver un moniteur de mise en œuvre.
Ce qui m'amène ici. Où et comment puis-je définir un moniteur? Comment puis-je la mettre en œuvre dans le reste du code?
/* Je suis de codage dans un *nix environnement */
OriginalL'auteur | 2010-09-30
Vous devez vous connecter pour publier un commentaire.
Je l'ai fait récemment pour un projet, le concept, j'ai mis en place était d'avoir un début de fil tous les autres et ensuite utiliser les sémaphores et les mutex pour contrôler l'inter processus de problèmes de synchronisation tout en traitant avec de la mémoire partagée.
Le concept d'un moniteur, dans le cadre de l'écran motif de conception, est un concept qui est essentiellement là pour masquer mutuelle excusion. Ce concept est exprimé en C++ Boost, mais il n'existe pas dans la base C++ ou C. La façon dont vous gérer ce type de job dans C est avec de la bonne vieille mutex (sémaphores binaires) et les sémaphores. Vous pouvez lire plus sur ce ici.
Ci-dessous est un moyen de base pour initialiser un sémaphore mutex et, vous deviez faire un peu de lecture sur comment et quand utiliser chacun d'entre eux comme c'est un peu long pour couvrir ici, mais ici est un lien pour vous aider à démarrer.
J'ai assommé que la fonction de moniteur que j'ai eu et l'a remplacé par un plus de réponse directe. Si vous souhaitez que le code de retour laissez-moi savoir, je viens de re-lire votre question et vu que ce n'était pas tout à fait ce que vous demandez. Dans votre commentaire ci-dessus que le code que votre référence est le pseudo-code, au meilleur de ma connaissance de construire n'existe pas en C.
Merci, je pense que je vais essayer de mettre en œuvre la mine par l'intermédiaire d'une fonction avec les sémaphores en principal et tentez de l'utiliser pour surveiller les différents threads. J'ai besoin de lire plus sur le sujet, c'est très complexe.
Je suis d'accord, c'est très complexe! Beaucoup de maux de tête et seg_fault a été frappé de travail de ces sortes de problèmes, que le lien que j'ai posté ci-dessus m'a beaucoup aidé. Si vous avez d'autres questions tout afficher.
OriginalL'auteur JonVD
Le code ci-dessus pour initialiser le sémaphore mutex et est grand. Voici un exemple de comment l'utiliser dans un programme qui pourrait avoir des erreurs lors de la multi-thread.
OriginalL'auteur Jack