Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1538 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C Ansi] Thread POSIX problème de synchronisation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C Ansi] Thread POSIX problème de synchronisation

n°987929
totalchuck
Posté le 20-02-2005 à 23:08:13  profilanswer
 

Bonjour,
 
Je doit faire un logiciel qui doit analyser le signal micro en temps réel.
 
Pour celà j'utilise <pthread.h> de POSIX. J'ai deux thread, un qui récupère les 10 dernières ms du signal (cette opération est blocante et met 10ms), et l'autre
qui analyse les 10 ms précédentes.
 
Tous les échantillons du signal récupérés doivent être analysés et il doit y en avoir 100 par seconde (car il ya 100*10ms en 1sec). Je doit donc synchroniser mes threads. Pour celà j'uilise la procedure pthread_yield().
 
Mais en placant cette procedure je constate une baisse énorme de performance, en effet mes thread tournent 10 fois trops lentement et je récupère donc seulement 10*10ms en une seconde, soit 90% d'échantillons perdus :-(.
 
Au début j'ai penser que mon analyse pouvait être à l'origine de ces pertent de performance, mais j'obtient les mêmes résultats quand mes deux thread ne font que boucler sans éffectuer aucune opération, elle se donnet juste la main avec pthread_yield.
 
Merci de bien vouloir m'apporter votre aide.


Message édité par totalchuck le 20-02-2005 à 23:09:10
mood
Publicité
Posté le 20-02-2005 à 23:08:13  profilanswer
 

n°988199
Lam's
Profil: bas.
Posté le 21-02-2005 à 11:56:05  profilanswer
 

Nan, ça m'a pas l'air d'être la bonne approche.
Yield ne permet pas de faire de la synchronisation: ça demande juste au système de passer une autre tâche en avant-plan si nécessaire (ce n'est donc même pas obligé, car si l'autre tâche attend aussi, le focus revient sur l'appelant).
 
Il faut que ta thread qui analyse les données fasse une attente passive à la fin de son traitement pour attendre les 10 ms suivants. Et il faut que ta thread qui reçoit les données signale à la thread d'analyse que 10ms de plus sont disponibles.
 
Utilises donc des variables conditionnelles, via pthread_cond_wait.
 
Visiblement, il y a un exemple là:
http://www.cs.sfu.ca/CC/300/zzhang [...] nditions.c

n°989055
moi23372
Posté le 21-02-2005 à 20:24:27  profilanswer
 

une variable conditionnel ou un mutex je dirais moi...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C Ansi] Thread POSIX problème de synchronisation

 

Sujets relatifs
petit problème pour requete sql un poil complexeproblème de quotes
[phpBB] probleme de temps[Expression reguliere] probleme de parsing de pseudo url
Probleme de Dim[deb] Probleme Java! MVC!
Probleme de date avec les jours travaillé ou non sour sql server[Java] Dessin dans un buffer affiché par paint => problème RESOLU
Problème ensemble d'exploration (TDriveCombobox, TDirectoryListBox...)Probleme html très facile a résoudre (mais je trouve pas snif)
Plus de sujets relatifs à : [C Ansi] Thread POSIX problème de synchronisation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR