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 :

thread + arguments


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 20
    Points
    20
    Par défaut thread + arguments
    Bonjour,

    j'ai un petit soucis. J'ai créé une interface graphique en GTK, j'aimerais l'intégrer au reste du projet en utilisant le "multithread" (je n'en ai jamais fait). j'aimerais faire appele à une fonction en lui envoyant des arguments. J'ai trouvé des solutions mais je ne sais pas les interpréter. Pour moi, void, ça veut dire vide, alors faire un pointer "vide" pour envoyer des données, je suis plus.

    j'ai quand même essayé mais ça n'aboutit pas. A la réception, la fonction considère que la variable n'existe pas.

    voila la struct à passer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct arg_pour_thread
    {
         int *argc;
         const char ***argv;
    }ST_thread;
    le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int main (int argc, const char **argv)
    {
        //déclarer les threads
        pthread_t thread_IHM;
        ST_thread *data;
        //remplissage des data "arg"
        data->argc=argc;
        data->argv=argv
        //création du thread IHM
        if (pthread_create(&thread_IHM,NULL,IHM,data))
            printf("Ereur création thread");
     
        return 0;
    }
    et le début de la fonction appelée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void IHM (ST_thread* data)
    {
     
        //initialisation de GTK
     
        gtk_init (*data->argc,*date->argv);
        //création de la fenétre principale
        GtkWidget *main_fenetre = NULL;
        main_fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title (GTK_WINDOW (main_fenetre), "Yes You Can");
        gtk_window_set_position (GTK_WINDOW (main_fenetre), GTK_WIN_POS_CENTER);
        g_signal_connect (main_fenetre, "destroy", gtk_main_quit, NULL);
    les ereurs sont :
    data->argc=argc;
    data->argv=argv;
    make pointer from integer without a cast
    et
    passing argument 3 imcompatible type of pointer

    J'espère que ce que j'ai raconté est compréhensible. Merci d'avance. Philippe

    P.S: si vous avez des conseilles, critiques, remarques ou que sais-je encore sur ma manière de coder je suis preneur. Merci

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Je crois qu'avant de te lancer dans la programmation multithread et GTK+, tu devrais au moins apprendre les bases du C. Tu as d'excellents cours sur ce site, je te laisse chercher.
    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 20
    Points
    20
    Par défaut
    Coup dur pour mon égaux.

    En-faite après 2 ans de dut et 1 an d'école d'ingénieur je pensais les avoir ,mais apparemment pas .
    j'ai déjà lu pas mal de cours et j'ai déjà fait plusieurs projets en C, SDL grace à ce site... je m'en sortais pas mal, enfin j'arrivais ce que je voulais.je pense donc être pré à me lancer dans du multistread...

    cordialement Philippe

  4. #4
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par PhilippeHen Voir le message
    Coup dur pour mon égaux.
    Surtout ne pas le prendre mal, je suis loin d'être un expert en langage C, néanmoins je considère que les pointeurs font partie de la base.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 20
    Points
    20
    Par défaut
    Ne t'en fais pas, je le prends avec philosophie, je suis sur ce site pour apprendre.

    mais j'aimerais vraiment trouver une solution ...

    bonne soirée.

  6. #6
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct arg_pour_thread
    {
         int argc;
         const char ** argv;
    }ST_thread;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int main (int argc, const char **argv)
    {
        //déclarer les threads
        pthread_t thread_IHM;
        static ST_thread data;
        //remplissage des data "arg"
        data.argc=argc;
        data.argv=argv
        //création du thread IHM
        if (pthread_create(&thread_IHM,NULL,IHM,&data))
            printf("Ereur création thread");
     
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void * IHM (void * arg)
    {
        ST_thread* data = arg;
        //initialisation de GTK
     
        gtk_init (data->argc,date->argv);
        //création de la fenétre principale
        GtkWidget *main_fenetre = NULL;
        main_fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title (GTK_WINDOW (main_fenetre), "Yes You Can");
        gtk_window_set_position (GTK_WINDOW (main_fenetre), GTK_WIN_POS_CENTER);
        g_signal_connect (main_fenetre, "destroy", gtk_main_quit, NULL);
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    Merci beaucoup pour ton aide, ça y est ça marche.

    c'est très gentil de ta part.

    Bonne journée.

  8. #8
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    You're welcome!
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

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

Discussions similaires

  1. thread argument ajoutés identificateur inconnu
    Par adurandet dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 16/01/2008, 09h39
  2. Problème de passage d'argument a un thread
    Par goof_22 dans le forum SDL
    Réponses: 2
    Dernier message: 19/04/2006, 17h59
  3. passer un tableau d'arguments à un thread
    Par madimane dans le forum POSIX
    Réponses: 5
    Dernier message: 14/04/2006, 07h08
  4. Réponses: 1
    Dernier message: 08/03/2006, 20h06
  5. [MFC] Envoyez un argument au thread
    Par Oberown dans le forum MFC
    Réponses: 3
    Dernier message: 23/08/2004, 16h59

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