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 :

Probleme avec les Threads


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Probleme avec les Threads
    Bonsoir a tous .
    voila je programme avec C++ sous linux

    j'ai une Fonction : void Acquisition (void)

    et j'appelle pthread create dans le main de la façon suivante :

    pthread_create (&thread_id[0],NULL,(void*)Acquisition ,(void *)Null);

    le problème c'est que lorsque j'enregistre le Fichier .c et je compile avec gcc ça marche parfaitement
    mais si j'utilise g++ avec un fichier .C ou .CPP j'aurai le message d'erreur suivant lors de la compilation :

    Erreur : invalid conversion from 'void*' to 'void* (*)(void*)'

    initializing argument 3 of 'int pthread_create(pthread_t* , const pthread_attr_t* , void* (*)(void*), void*)'


    Merci pour votre aide !

  2. #2
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    pthread_create prend comme argument un void*(*)(void*) (un pointeur de fonction ayant un pointeur générique en argument).

    En C, ça passe. Pas en C++. Pas trop le temps et l'envie de t'expliquer exactement pourquoi en C void * = void*(*)(void*) et pas en C++. Je le ferai plus tard si personne ne l'as fait avant moi.

  3. #3
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Bon, en gros (très gros) le typage c++ est plus fort.
    De la même façon, en C, fonction() équivaut à fonction prenant tout type d'argument, alors qu'en C++ cela est equivalent à fonction(void) (sans argument).

    La tu peux considérer que void * en C, ça veux dire tout type de void * (void* () en quelque sorte). En C++, ça veut plus dire void *(void) donc juste un pointeur. Or là, tu à un void * (*)(void*) qui est un pointeur particulier.Bon, c'est très grossier, mais l'esprit est là.

Discussions similaires

  1. probleme avec les threads et class
    Par cosmoff dans le forum Général Python
    Réponses: 1
    Dernier message: 25/05/2015, 14h32
  2. probleme avec les thread
    Par ashurah dans le forum Concurrence et multi-thread
    Réponses: 15
    Dernier message: 26/03/2010, 14h05
  3. Probleme avec les threads
    Par Loenix dans le forum Général Python
    Réponses: 4
    Dernier message: 04/06/2009, 14h50
  4. Probleme avec les thread
    Par jonny dans le forum MFC
    Réponses: 11
    Dernier message: 01/06/2006, 17h37
  5. Probleme avec les threads
    Par Orahn dans le forum MFC
    Réponses: 5
    Dernier message: 04/11/2005, 10h14

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