IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Sémaphores : piège avec SEM_UNDO ?


Sujet :

C

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut Sémaphores : piège avec SEM_UNDO ?
    Bonjour.

    Je lis que sur les opérations de Sémaphore, il y a une option SEM_UNDO.

    Je cite:
    SEM_UNDO, le noyau mémorise l'opération inverse de celle demandée, de manière à pouvoir annuler celle ci si le processus se termine en erreur.
    Ainsi à la fin du processus, toutes les opérations mémorisées sont automatiquement réalisées.
    Génial non?

    Alors en lisant cela je me dis que je l'utiliserai systématiquement, d'où ma question :

    Il y a t'il un piège? une situation où ce serait une mauvaise idée de l'employer?

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    je ne connais pas ce SEM_UNDO.
    Il ne me semble pas être POSIX, si c'est le cas j'y vois un problème de portabilité.

    Ensuite pourquoi pas, il est vrai que intuitivement le fait d'avoir un auto-déblocage lors de l'arrêt d'un process semble intéressant.

  3. #3
    Membre très actif
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 548
    Par défaut
    Bonsoir
    Citation Envoyé par giova_fr Voir le message
    Bonjour.
    Je lis que sur les opérations de Sémaphore, il y a une option SEM_UNDO.
    Je cite:
    SEM_UNDO, le noyau mémorise l'opération inverse de celle demandée, de manière à pouvoir annuler celle ci si le processus se termine en erreur.
    Ainsi à la fin du processus, toutes les opérations mémorisées sont automatiquement réalisées.

    Génial non?
    Alors en lisant cela je me dis que je l'utiliserai systématiquement, d'où ma question :
    Il y a t'il un piège? une situation où ce serait une mauvaise idée de l'employer?
    Merci d'avance pour votre aide.

    SEM_UNDO est une valeur particulière que l'on place dans "sem_flg" elle définit qu'une fois le processus terminé toutes les modifications de la valeur du sémaphore seront annulées.
    Citation Envoyé par giova_fr Voir le message
    Alors en lisant cela je me dis que je l'utiliserai systématiquement, d'où ma question :
    Il y a t'il un piège? une situation où ce serait une mauvaise idée de l'employer?
    Merci d'avance pour votre aide.
    Votre explication fait référence à un contexte bien précis en clair, le noyau Linux dispose d'une valeur d'ajustement qui contient en permanence la valeur résultant de l'addition des différentes opérations de sémaphore et lorsqu'on additionne cette valeur à celle du sémaphore actuel, cette dernière est rétablie comme si aucune opération n'avait eu lieu

    Citation Envoyé par giova_fr Voir le message
    Je cite:
    SEM_UNDO, le noyau mémorise l'opération inverse de celle demandée, de manière à pouvoir annuler celle ci si le processus se termine en erreur.
    Ainsi à la fin du processus, toutes les opérations mémorisées sont automatiquement réalisées.
    En temps normal, vous devez toujours la définir sauf dans un cas précis (dans le cas où un second processus hérite de la tâche où reprend la tâche du premier processus et qu'il traite la valeur de sémaphore en cours).


    Citation Envoyé par dalfab Voir le message
    Bonjour,
    je ne connais pas ce SEM_UNDO.
    Il ne me semble pas être POSIX, si c'est le cas j'y vois un problème de portabilité.
    Ensuite pourquoi pas, il est vrai que intuitivement le fait d'avoir un auto-déblocage lors de l'arrêt d'un process semble intéressant.
    Cette fonctionnalité est bien POSIX et de façon générale elle fait partie des exclusions mutuelles par sémaphore présent sur le noyau Linux.
    Je suis un peu curieux quels sont les problèmes de portabilité dont vous voyez ?
    à bientôt

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    Merci beaucoup pour ces explications.

    Je ne suis pas sur de cerner ce qui se passera lors de la création d'un processus fils héritant du sémaphore, à vous lire j'en déduis qu'il y a risque d'annuler 2 fois les opérations...
    Je garde cette info dans une case mémoire de mon cerveau pour le jour où je tomberai sur ce cas.

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Citation Envoyé par sambia39 Voir le message
    Cette fonctionnalité est bien POSIX et de façon générale elle fait partie des exclusions mutuelles par sémaphore présent sur le noyau Linux.
    Je suis un peu curieux quels sont les problèmes de portabilité dont vous voyez ?
    Justement je ne connais pas du tout Linux, mais pensais bien connaître POSIX (entre autre via Unix et QNX). Et je craingnais que cela soit une fonctionnalité du noyau Linux.

Discussions similaires

  1. Synchronisation avec sémaphore.
    Par Xanh83 dans le forum POSIX
    Réponses: 3
    Dernier message: 18/07/2008, 11h00
  2. Réponses: 3
    Dernier message: 22/09/2007, 13h56
  3. Comment ne rater aucun événement avec des sémaphores ?
    Par vince3147 dans le forum Langage
    Réponses: 4
    Dernier message: 15/08/2007, 12h55
  4. Réponses: 5
    Dernier message: 17/05/2007, 01h19
  5. [g++] problème avec les sémaphores
    Par gorgonite dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 21/12/2006, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo