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 :

Synchronisation entre deux méthodes avec les sémaphores


Sujet :

C++

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut Synchronisation entre deux méthodes avec les sémaphores
    Bonjour ,
    je souhaite synchroniser ces deux méthodes avec une ou deux sémaphores quelqu'un a une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    i = 0 
    get = 0 
    methode 1
     
    aquerir_tampon()
    get = 1
    while (i == 0)
    {}
     
    methode 2
    recu_tampon(){
    recu_tampon()
    if(get== 1){
    i = 1}
    else {
    send jeton () }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Points : 608
    Points
    608
    Par défaut
    La question n'est pas limpide

    Peux-tu expliquer un peu mieux ce que tu cherches à accomplir ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    dans un système distribué chaque terminal qui souhaite effectuer des traitement a besoin d'un jeton pour rentrer dans sa section critique .
    j'ai developpé deux methodes aquérire_jeton et recu_jeton .
    Je souhaite des synchroniser en utilisant P() et V() des sémaphores .

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Points : 608
    Points
    608
    Par défaut
    Il n'y a qu'un seul jeton ? N'est-ce pas plutôt un mutex dont tu as besoin ?

    Quoi qu'il en soit j'ai l'impression que tu sais ce que tu veux, mais ta question est très vague/générique. As-tu essayer d'écrire le code en lisant la doc ? Il y a plein d'exemple sur le net, par exemple : http://www.amparo.net/ce155/sem-ex.html

    Je te propose d'essayer d'écrire du code avec ça et ensuite de nous le montrer en posant des questions précises sur ce qui te pose problème.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    En gros voici le problème :
    Nous avons une Thread qui va vouloir émettre un paquet sur le réseau.
    Pour cela, elle doit attendre d'avoir le jeton.
    Puis émet le paquet, et libère le jeton.
    Cette attente peut être active ou passive.
    Qu'elle serait une solution (avec des sémaphores) pour faire ceci ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    initialise ton semaphore a 1.
    a chaque fois que tu vas vouloir accéder a ta ressource critique ( quelque soit le thread)
    tu vérifie si le jeton est libre ( P())
    une vois le travail sr la ressource critique terminé utilise V() pour relâcher le jeton.



    attention si tu a plus de 2 thread et que tu cherche a avoir un enchainement déterministe ( thread 1 puis thread 3 puis thread 2 par exemple) il te faudra un second semaphore a placer correctement

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Bonjour
    Merci pour ta réponse et justement il faut utiliser deux sémaphore te je sais pas si je les ai bien placer dans mon code , voici l'exemple que j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    semaphore s1 = 0;
    	semaphore s2 = 0;
     
    	A() {			B() {		
    		write(x);  			P(s1);
    		V(s1);				read(x);
    		P(s2);				write(y);
    		read(y);  			V(s2);
    	}					}
    et voici ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    semaphore s1 = 0;
    semaphore s2 = 0;
     
     
    A() {						       B() {		
    Get_jeton();  
    Envoyer_res()					P(s1);
    V(s1);						Get_jeton();
    Send_jeton(y);  	
    							Jouer()											Envoyer_res()
    P(s2);						send_jeton(y);
                                                            V(s2);
     
     
    	}					        }

Discussions similaires

  1. Réponses: 13
    Dernier message: 11/06/2015, 15h51
  2. [SQL-Server] Synchronisation entre deux BD MS SQL et tâche planifiée (avec PHP)
    Par beegees dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 18/12/2010, 16h06
  3. Réponses: 1
    Dernier message: 17/09/2010, 01h40
  4. synchronisation entre deux threads
    Par chabfive dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 03/11/2006, 12h17
  5. Réponses: 1
    Dernier message: 05/10/2006, 04h20

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