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 :

[MT] Essayer de lancer une fonction - Multithreading?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut [MT] Essayer de lancer une fonction - Multithreading?
    Bonjour à tous,

    Je suis complètement débutant en Multithreading (enfin ça remonte à loin).
    Je traverse actuellement un problème, qui je pense, ne peut être traité que par du multi-tâche...

    Dans mon programme je dois effectuer une connexion sur un serveur afin de récupérer une donnée. La plupart du temps, le serveur est dispo. J'aimerais cependant que mon programme ne plante pas lamentablement quand il ne l'est pas...
    J'ai pensé à éxécuter ma fonction pour aller chercher la donnée réseau sur une tâche parallèle. Si au bout d'un certain temps (5 à 10 secondes) il ne s'est rien passé, je termine le thread et j'informe l'utilisateur d'un problème réseau.

    Qu'en pensez-vous?

    Je suis actuellement en train de me renseigner sur les Threads de Boost, ainsi que le tuto de Miles associé...

    Merci pour votre aide!

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Chez boost tu as aussi asio ( http://asio.sf.net/ ) qui balance des exceptions en cas d'erreurs.
    Je pense que gérer des exceptions en lieu et place des if(!connected) peut être pas mal. Ca peut simplifier les choses.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Mon code actuel est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void Filtre::initFiltre()
    {
    	m_nom_fichier_brillance = "filtre" + to_string(m_numero_camera) + ".txt"; // filtre1.txt, filtre2.txt etc...
    	m_nom_fichier_flux =  "flux" + to_string(m_numero_camera) + ".txt";
     
    	LitTopInt(getChocNum(), "DVISCCD", "FILTRE", "NUM", &m_numero_filtre);
    }
    Et la fonction LitTopInt est assez pourrie (en C, pas de gestion d'erreurs)... J'aurais aimé une petite levée d'exception, mais bon...
    Cette fonction pose problème, alors l'éxécuter dans un thread serait peut-être une bonne idée...

    Alp, j'ai peur de ne pas avoir compris ce que tu voulais me dire... Tu pourrais expliquer un peu plus s'il te plaît ? Merci !

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Tu n'as pas besoin de multi-tâche du tout.
    C'est une simple question de timeout.

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par loufoque
    Tu n'as pas besoin de multi-tâche du tout.
    C'est une simple question de timeout.
    Oui, c'était ma première idée... Mais comment faire? Un fois le programme rentré dans la fonction LitTopInt, mon programme est bloqué non?
    La fonction LitTopInt n'a pas écrit écrit par mes soins (je l'ai en version dll ).

    Comment intégrer un timeout?

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Si tu es bloqué avec une fonction pré-écrite bidon, il te faut un genre de thread effectivement...

Discussions similaires

  1. Comment lancer une fonction à une date donnée
    Par ideal dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/02/2006, 12h52
  2. Réponses: 9
    Dernier message: 14/12/2005, 21h05
  3. [Onload] Lancer une fonction au chargement de la page ??
    Par Kylen dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/06/2005, 18h36
  4. [PHP-JS] comment lancer une fonction javascript a partir de php
    Par amika dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/06/2005, 19h23
  5. Comment lancer une fonction
    Par Elois dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 21/04/2004, 19h10

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