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 :

Pb thred mutex


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 99
    Par défaut Pb thred mutex
    Bonjour,

    j'ai un problème qui me semble pas ci dur que ça mais dans ma tete c'est pas très clair.

    Mon but est le suivant :
    - Lors de l'appuie sur une touche clavier : afficher "roule" puis afficher en boucle toutes les secondes "capteur"
    - A un instant t si j'appuie sur une autre touche ça doit m'afficher "stop".

    J'ai une très forte penser pour tout ce qui est sémaphore, thread, mutex ... mais leur utilisations me reste encore très flou.

    Si quelqu'un peut m'apporter un peu d'aide ça serait sympa.

    Merci

    Ju

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Tu pourrai faire un truc du style :

    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
     
    while(getchar())
    {//creation du thread
         handleThread=CreateThread(
    					  NULL,  20,	  lpMonThread,   (LPVOID) NULL,                        
    					  0,	  id_lpMonThread	);
    }
    while(1)
    {//on met un verrou
         if(wait==1)
         {
              printf("capteur");
         }
    //sert a rien de monopoliser le pross
    sleep(1);
    }
    Tu créé ton sémaphore ou un fonction d'attente "basique" a coup de sleep, Sleep ou usleep ou sinon timestamp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	time_t timestamp;
        struct tm * t;
    	/**prend la date courante (system)**/
    			timestamp = time(NULL);
    			t=(struct tm *)calloc(1,sizeof(struct tm));
    			gmtime_s(t,&timestamp);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 99
    Par défaut
    a quoi correspond ton wait ?

  4. #4
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    le "wait" serai un verrou.

    Une sorte de variable globale (OMG c'est mal...) que tu force à 1 une foie que tes X seconde sont écoulées, par exemple.

    Puis tu la re-force a 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         if(wait==1)
         {
              printf("capteur");
              wait=0
         }
    Mais peut-être (probablement même) existe t'il une solution beaucoup plus "jolie"
    (tiens ça me rappelle un prof qui préférai qu'on fasse des truc "jolis" plutôt que fonctionnellement meilleurs...)

    Voir même si ce n'est pas plus jolie, simplement plus fonctionnel..

    Mais as-tu une fourchette, une marge d'erreur (eg 1sec +0.02sec max).

    Car simplement une marge de 0.02 sec te faciliterais beaucoup la tache je pense !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 99
    Par défaut
    non je n'ai pas de marge car en fait le but est de commander un robot et lorsqu'on le commande on a juste une fonction avance ki lance les moteurs jusqu'à la demande de l'arrêt et pendant ce temps là je dois relever l'état des capteur de distance pour pas qu'il ne percute un mur et le tout sans être bloquer afin de pouvoir s'arrêter même si le mur n'est pas encore présent.

    Donc je ne suis pas a 0.2 secondes pret.

    je vais essayer ce que tu viens de me dire.

    Merci

Discussions similaires

  1. mutex windows
    Par niglo dans le forum Windows
    Réponses: 2
    Dernier message: 04/05/2005, 10h28
  2. Mutex sous windows
    Par gregfly26 dans le forum C++Builder
    Réponses: 10
    Dernier message: 13/04/2005, 13h30
  3. pthread et mutex
    Par Nico65 dans le forum C++
    Réponses: 20
    Dernier message: 16/01/2005, 12h30
  4. Gestion de mutex
    Par salammbo dans le forum GLUT
    Réponses: 1
    Dernier message: 22/12/2004, 10h19
  5. Utilisation des Mutex
    Par jordy16 dans le forum C++Builder
    Réponses: 3
    Dernier message: 09/12/2004, 09h02

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