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] Surveillance de périodicité


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut [MT] Surveillance de périodicité
    Bonjour,
    Je souhaite effectuer une surveillance de périodicité d'évènements.
    Chaque évènement a une périodicité qui lui est propre (de 2 à 5 secondes).
    Une centaine d'événements différents sont détectés.

    Je souhaite donc implémenter une centaine de processus légers (même très légers), qui attendent un événement toutes les 2 à 5 secondes.
    Si, au bout d'un TimeOut l'événement n'est pas apparu, un signal est émis.

    En implémentant le code si dessous, l'application est très gourmande en ressources.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    void init_Surveillance()
    {
    	int i ;
     
     
    	// Initialisation des structures de paramères de Threads
     
    	ParamThread_Surveillance[0].iPeriode=1000 ;
    	ParamThread_Surveillance[0].ulIdent=30 ;
    	ParamThread_Surveillance[0].iTimeOut=3400 ;
     
    	ParamThread_Surveillance[1].iPeriode=4000 ;
    	ParamThread_Surveillance[1].ulIdent=32 ;
    	ParamThread_Surveillance[1].iTimeOut=5500 ;
     
     
     
    	for(i=2;i<80;i++)
    	{
     
    		ParamThread_Surveillance[i].iPeriode=2000 ;
    		ParamThread_Surveillance[i].ulIdent=i ;
    	}
     
     
    	// Démarrage des Threads de surveillance
    	for(i=0 ; i<80 ; i++)
    	{
    		hSurvThread[i]=AfxBeginThread(Surveillance_Thread, (void*) &ParamThread_Surveillance[i], THREAD_PRIORITY_TIME_CRITICAL,0,0,0);
    	}
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    UINT  Surveillance_Thread(LPVOID context)
    {
    	struct_ParamThread_Surveillance* pParam=(struct_ParamThread_Surveillance*)context ;
     
    	DWORD ret;
    	HANDLE* Hdl=pParam->InterruptEvents ;
    	int iTimeOut =pParam->iTimeOut ;
     
    	for(;;) // Boucle infinie
    	{
    		ret = WaitForMultipleObjects(2, Hdl, FALSE,iTimeOut );
     
    		if(ret==WAIT_TIMEOUT)
    		{
    			//on a un TimeOut
    			ErrorSignal(pParam->ulIdent) ;
    		}
    	}
     
    	return 0 ;
    }
    Y a-t-il des objets moins gourmands en ressources que les AfxThread ?

    L'utilisation de micro-threads est elle bien adaptée à ce type de problème ?

    Merci d'avance pour vos avis.

    Nicolas
    Strasbourg

  2. #2
    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
    A priori tu n'as pas besoin de threads du tout.
    Il te suffit d'attendre jusqu'au prochain évenement.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut
    Citation Envoyé par loufoque
    A priori tu n'as pas besoin de threads du tout.
    Il te suffit d'attendre jusqu'au prochain évenement.
    Non, parce que la detection doit se faire en ABSENCE d'évènement !

Discussions similaires

  1. [web] [script] surveillance forum developpez.
    Par Choupi dans le forum Web
    Réponses: 28
    Dernier message: 14/07/2004, 04h23
  2. Surveiller un fichier
    Par jmsd dans le forum MFC
    Réponses: 4
    Dernier message: 10/05/2004, 00h01
  3. [ netstat ] surveillance entre machines pour demon mysql
    Par gogozep001 dans le forum Développement
    Réponses: 2
    Dernier message: 28/08/2003, 11h05
  4. Outils linux pour surveiller les perf d'un serveur ?
    Par MASSAKA dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 22/10/2002, 10h40

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