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 :

Erreur lors de creation de threads


Sujet :

Threads & Processus C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2016
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Erreur lors de creation de threads
    Bonjour,

    J'essaye de démarrer une thread a partir d'un std::vector. Hors j'ai une erreur etrange, et je n'arrive pas comprendre pourquoi.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Server
    	{
    	public:
    		void ClientHandler(int ID);
     
    	private:
    		int m_nbClient;
    		std::vector<std::thread*> m_threadList;
    	};
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_threadList[m_nbClient] = new std::thread(ClientHandler, m_nbClient);
    Erreur: aucune instance de std::thread::thread ne correspond à la liste d'argument
    les types d'argument sont: (void(int), int)

    Merci pour votre aide précieuse.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 4 756
    Points : 11 346
    Points
    11 346
    Par défaut
    La fonction membre ClientHandler est une "void Server::*(int)" pas une "void(int)".
    Il faut utiliser d'autres mécanismes que "std::thread", je pense.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    6 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 6 770
    Points : 31 039
    Points
    31 039
    Billets dans le blog
    4
    Par défaut
    Je saisis pas ce que tu veux faire mais utilise une lambda m_threadList[m_nbClient] = new std::thread([m_nbClient](){ ClientHandler(m_nbClient); });
    Je pense pas que le résultat soit super probant, je pense que le comportement que tu souhaites est incorrecte, mais ça devrait compiler.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

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