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

Threads & Processus C++ Discussion :

Conseil développement en thread


Sujet :

Threads & Processus C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Conseil développement en thread
    Bonjour à tous,

    Voilà mon problème, j'ai actuellement une caméra qui me prend 25 images/seconde, si je fais que de l'affichage, j'ai bien mes 25 images par seconde en débit avec un temps d’exécution de 1ms. (GetTickCount() entre deux passages)

    Maintenant je souhaite enregistrer à la volée chacune de ces images sur mon disque dur pour du traitement ultérieure. Mon problème est que dès que je rajoute la fonction (fournie par le constructeur de la caméra) pour sauvegarder mes images, et ben là je tombe à un débit d'environ 10 images par seconde, le processus de sauvegarde prenant entre 40 et 150ms...

    Je pensais donc au système de thread et pourquoi pas faire une pile d'images que j'aurai à enregistrer et qui le serait au fur et à mesure sans pour autant que ça me plombe mon débit.

    Je dois coder en C++ avec MFC, je ne suis pas trop un habitué du thread (et je suis plus java) donc j'aurai aimé savoir si cela est possible et/ou faisable sans trop de difficulté. Ou bien si vous aviez une solution.

    D'habitude j'aime bien réinventer la roue mais là je suis bloqué et je n'ai pas tellement de temps de disponible.

    Je vous remercie d'avance.

  2. #2
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Salut,

    tu peux utiliser les API windows, mais il existe beucoup de bibliothèques gérant les threads de façon plus intuituf.

    Dans mon appli on utilise celle de QT, mais tu peux aussi te servir de celle de boost.

    A+.
    For crying out loud !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Ca va paraître un peu con, mais est-ce que je peux directement implémenté un thread sans trop chamboulé mon programme. En clair ma ligne qui fait ma sauvegarde, si je veux l'exécuter dans un thread, je peux directement créer l'ensemble des fonctions que j'ai besoin pour mon thread et dire à mon programme que ma ligne je veux qu'il me crée un thread pour l'exécuter et pas ralentir le reste de mon acquisition.

    Je demande car j'ai jamais vraiment fait de thread et qu'à chaque fois que j'ai voulu apprendre j'ai vachement galéré. J'y suis déjà arrivé en Java donc bon ça devrait pas être la mort en C++.

  4. #4
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Tu peux créer un thread et lui passer en paramètre directement l'adresse de la fonction qui va s'occuper de la sauvegarde de tes images, ce qui ne modifiera pas trop ton programme.

    Je vois pas de problème de ralentissement qui mettrait en péril ton application...Une acquisition vidéo c'est assez rapide, et le multi-threading est un fonctionnement classique. De plus le switch entre deux threads est rapide (le temps d'enregistrer l'état des registres du thread actuel et de charger ceux du prochain)...Et tu peux aussi fonctionner en multi-coeurs...

    En revanche il va falloir que tu gère la priorité de tes threads pour que l'enregistrement ne se fasse qu'une fois l'acquisition réalisée et il te faudra aussi mettre en place un système de Mutex pour bloquer l'accès à ton buffer d'images (ressource partargée par tes threads).

    A+.
    For crying out loud !

Discussions similaires

  1. Besoin de conseil Développement (vers les RIA ?)
    Par Promesses dans le forum ASP.NET
    Réponses: 9
    Dernier message: 05/02/2008, 17h50
  2. conseil développement d'application
    Par damien77 dans le forum C
    Réponses: 4
    Dernier message: 05/10/2007, 15h19
  3. Conseils développement application pour Windows
    Par RobertP dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 07/06/2007, 10h22
  4. Conseils sur le thread
    Par neptune dans le forum MFC
    Réponses: 5
    Dernier message: 03/01/2006, 10h44
  5. conseils développement
    Par veneto dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 13/06/2004, 02h00

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