begin process at 2012 05 30 00:05:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Autre

 > 

Linux C++ Thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Linux C++ Thread

jeudi 5 octobre 2006 à 09:40:27 | Linux C++ Thread

mikoo74

Salut All !
voila j'aimerais me renseigner un peu sur les Thread...Je dois developper un prog qui recupere des message sur un port et qui les traite.seulement le nombre de message est enorme et je pensai a chaque message recu lui affecter un nouveau thread ki le traite et se tue comme ca le prog continu a scanner... Je demarre egalement des Thread dans un Thread deja creer ... C'est bien ?
voila ce que j'ai fait j'aimerais savoir ce que vous en penser ...Je debute dans le domaine ^^
Je ne vais mettre que les partie importante car le code est long.

[code]

void * tag_log(void * arg)
{   
       //traitement coupé
       //appel d'une autre fonction (pas un thread...)

       pthread_exit(0);
}
       //**********************************************
bool filtre_client(MYSQL* my, char ip[], char mess[])
{       
    pthread_t th_tag;

    //traitement de filtrage coupé  

        //démarrage du thread de tag
        if (pthread_create (&th_tag,NULL,tag_log,message) == 0)
        {
            pthread_detach(th_tag);
        }
        else
        {
            printf("\nImpossible de démarrer le Thread de Tag\n");
        }
}

//**********************************************
void * start_ecoute(void * arg)
{
       //code coupé
    while(1)
    {   
             //(code coupé) reception du message
             filtre_client(mysqlco,ip,line) == false
     }
}

//**********************************************

int main()
{   
    pthread_t th_ecoute;

    //démarrage du thread d'éoute UDP
    if (pthread_create (&th_ecoute,NULL,start_ecoute,NULL) == 0)
    {
        printf("Thread de D' Ecoute Syslog Demarre...\n\n");
    }
    else
    {
        printf("Impossible de démarrer le Thread D' Ecoute Syslog\n\n");
    }
    pthread_detach(th_ecoute);

    //Attente de la fin du Thread (inutil car programme "infini")
    //(void)pthread_join (th_liste,NULL);

    return 0;
}

//**********************************************
[/code]

Bon voila j'ai mis vraiment que l'essentiel c'est a dire ce qui concerne les thread.Je ne sais pas en fait si cela fait vraiment bien ce que je veux car sous linux (console) je n'arrive pas a oir si des thread sont crées a partir de processus. J'ai vraiment besoin que le prog perde le moins de temp possible et comme les traitement sont long ... il faut que chaque message soit traiter dans un processus detaché du principal !Bien que la je le recois, fait un 1er filtrage puis si le message passe c'est la que je demarre un autre thread...

Merci d'avance ! ++

jeudi 5 octobre 2006 à 11:46:00 | Re : Linux C++ Thread

DeAtHCrAsH

Un thread par message?
Ca fait un peu beaucoup non ?

Pour quoi ne pas travailler avec seuleument deux threads ?
Un qui empile les data dans une FIFO.
L'autre qui dépiles les data de la FIFO et les traites.

Pour ma part j'aurai procédé de la sorte.

Shell
jeudi 5 octobre 2006 à 12:00:14 | Re : Linux C++ Thread

mikoo74

tu as surement raison ... seulement c'est un projet pour lequel le temp m'était limité et j'ai préféré utilisé mes connaissances car j'avais eja utilisé les threads sous windows (borland 6 c++).
Je me suis dit que chaque message creerait un thread mais qui ne resterait en vie que tres peu de temp (le temp du traitement). au pire qque thread serait creer avant que les precedent ne se soit tué ... mais jamais bcp en meme temp au final ! En tout cas cela marche, enfin a lair de marcher....seulement je ne sais pa reelement ce qu'il en est au nivo des creations des thread ... on ne peut pa savoir en commande linux ??? (jai fouiller les option de pstree top ... en vain)
Et surtout c'est "potable" de creer des thread depuis des thread ? et est ce que des "fork" serai mieux dans mon cas ? j'ai voulu essayé mais j'ai pas bien compris ... :s
Merci !
jeudi 5 octobre 2006 à 18:00:16 | Re : Linux C++ Thread

AlexN

La principale différence entre un processus classique et un thread (processus léger) est que lors de la création d'un processus, il y a création d'un nouvel espace d'adressage pour le fils. Le pere et le fils partage une seule chose : le segment TEXT (le code). Tandis que lors de la création d'un thread, l'espace d'adressage n'est pas recréé (gain de temps à la création et gain d'espace mémoire) mais partagé entre père et fils (sauf la pile utilisateur et la pile système). Le nouvel agent déroule son code dans le même EA.
Il n'y a aucun problème à créer des threads dans d'autre. Le fils n'aura pas pour parent le thread créateur (sauf si c'est le leader du groupe) mais sera rattaché au thread leader du groupe.
Peut être que créer un thread par groupe ou catégorie de messages plutôt que 1 thread par message sera un vrai gain. Ce n'est pas parce que les threads sont légers que créer 2000 threads au lieu d'un seul processus permet de gagner quelquechose.

mardi 10 octobre 2006 à 10:29:18 | Re : Linux C++ Thread

mikoo74

oé ok je vais voir pour tout ca merci. ++


Cette discussion est classée dans : tag, message, thread, pthread, th


Répondre à ce message

Sujets en rapport avec ce message

Linux Variable passé a un Thread [ par mikoo74 ] Bonjour.Voila je doit envoyé une chaine a un Thread.  je fait:********************************char * message;message = new char [1000];if (pthread_cre Probleme thread linux ... [ par Tidam ] Voila mon probleme, quand je ve compiler il me sort une erreur : passing `void (*)(void *)' as argument 3 of `pthread_create(pthread_t *, const pthrea thread dispatch [ par joduak ] Bonjour,Voilà, j'utilise boost pr créer des threads  et je créé un objet dispatcher pr exécuter un traitement selon le msg reçu comme suit :********* threads et semaphores [ par liliefr2000 ] bonjour J'ai un probleme,je souhaite a l'aide de deux threads calculer la somme des entiers contenu dans un tableau..pour cela le premier thread va co LAN Socket et multi thread [ par RV2931 ] Bonjour, Je suis en train d'essayer de faire un chat en réseau, chaque machine est client/serveur sur un port. Mais on m'a conseillé de faire un threa Suspend/Resume pthread (Thread linux) [ par Booster ] Bonjour à tous,J'aimerais savoir si il existe suspend et resume (thread) sous linux (Comme on le fait pour windows) ?J'ai bien l'impression que non d' ARRTER UN PTHREAD [ par sebastienmz ] Bonjours tlmje voudrais savoire comment on arrete un thread sous linux avec la librairie pthread.hen fait mon problème je lance un thread et a un mome Sdl_net + pthread probleme d'argument [ par Defaite ] Bonjour à tous.Voila mon problème, j'ai une thread ( en Pthread ) qui devrait s'occuper d'un socket.Seulement voila, impossible de dire à ma thread co thread de capture audio [ par Mastersam ] bonjour, suite à un gros problème sur le tracé de l'enveloppe du signal provenant de la carte son où l'arrivée d'un buffer déclenchait le redraw du gr C(Linux)thread [ par noussa1985 ] st tt le monde SVP eske qqu'1 pe m'aider à ecrire un code en C(Linux) en utilisant les threadsMon pgm permet de calculer le carré des entiers entre 0


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales