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 :

Interruption et thread


Sujet :

Threads & Processus C++

  1. #1
    Membre exp�riment� Avatar de cedd70
    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Par d�faut Interruption et thread
    Bonjour,


    Je souhaiterais ex�cuter un programme pour un temps relativement pr�cis 60s par exemple.

    Dans mon programme je r�alise des fonctions longue � calculer, et je souhaite arr�ter mon programme m�me si la fonction n'a pas finis de calculer.

    Je pense donc qu'il faut passer par un thread qui g�re le temps mais je sais pas du tout comment proc�der.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    void delay(){
       sleep(1000*120); //2 min
    }
     
    void main(){
       while(temps < 60s) {
            delay();
       }
    }
    Le probl�me avec �a il va attendre que la fonction sois finis pour arr�ter le programme.


    Merci

  2. #2
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2015
    Messages
    1 599
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : D�cembre 2015
    Messages : 1 599
    Par d�faut
    Bonjour,

    Pour arr�ter une application, je vois trois possibilit�s :

    a) un thread dont la callback attend puis simplement arr�te tout
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    void *thread_procedure( void * )
    {
       sleep(delai);
       exit(0); 
    }
    et lancement du thread par std::thread(thread_procedure)
    b) on peut aussi programmer un timer dont la callback arr�te tout ; pratique pour les cas simples.

    c) il existe aussi les signaux posix (m�me sous Windows) en une seule ligne
    en appelant directement : unsigned alarm(unsigned seconds);
    qui va envoyer un signal SIGALRM apr�s N secondes (ne pas traiter ce signal provoquera un arr�t de l'application.)

  3. #3
    Membre exp�riment� Avatar de cedd70
    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Par d�faut
    Merci,

    J'ai fait un peu diff�remment mais ca marche si ca peut aider du monde


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void *thread_procedure( )
    {
       sleep(90);
       exit(0); 
    }
     
    int main( int argc, char *argv[] ) {
    	thread temps;
    	temps = thread(thread_procedure);
    	while(temps.joinable()){
    		faire un truc :) ;
    	}
    }
    m�me si le "truc" est pas finis on arr�te le programme.


    Mais c'est moche de faire un sleep je mange du processeur inutilement, je suis ouvert � une meilleur solution

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

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

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Oui, c'est tr�s tr�s moche.
    Et j'esp�re que vous attendez pas � quelques chose de pr�cis.

    un sleep je mange du processeur inutilemen
    Surement pas. Un sleep ne consomme aucun cycle CPU autre que l'appel syst�me.

    Il y a plein de moyen bien plus simple et fiable que ce "machin", mais il faut nous donner plus de d�tails sur le "pourquoi".

    Demander � un programme de s�auto-controler, c'est compliqu� et pas fiable. Si la programme part en sucette, c'est pas avec votre bricolage qu'il s'arr�tera.

    Windows dispose d'un scheduler, profitez s'en, m�me si c'est pour envoyer un WM_QUIT � une fen�tre, envoyer un SIGNAL � la POSIX, faire du taskill bourrin, en fonction du mode du fonctionnement du programme � manager.

  5. #5
    Membre exp�riment� Avatar de cedd70
    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Par d�faut
    Le programme et aussi bien sur linux que sur windows pour le moment � long terme il sera embarqu�.

    Comment faire ca de fa�on plus propre bacelar ?

    Merci

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

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

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Comment faire ca de fa�on plus propre bacelar ?
    mais il faut nous donner plus de d�tails sur le "pourquoi" (BIS)

    Le solution est fonction du pourquoi de l'application.

    Le programme et aussi bien sur linux que sur windows
    Comme je dis que ce genre de truc n'a rien � faire dans le programme lui m�me, on s'en fout un peu.

    En plus, le scheduler existe aussi bien sous Linux que sous Windows.

    � long terme il sera embarqu�.
    Je pense qu'un scheduler, c'est jouable, non ?

  7. #7
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2015
    Messages
    1 599
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : D�cembre 2015
    Messages : 1 599
    Par d�faut
    En effet l'arr�t d'une application ou m�me d'un thread c'est tout une technique.
    Par exemple quand on parle d'embarqu� cela peut exclure les threads, et comme le dit bacelar il restera toujours la possibilit� d'utiliser un scheduler.

Discussions similaires

  1. Interruption de thread
    Par NoIdea dans le forum Threads & Processus
    R�ponses: 7
    Dernier message: 19/03/2014, 13h33
  2. Interruption de thread
    Par adn013 dans le forum Concurrence et multi-thread
    R�ponses: 2
    Dernier message: 21/08/2007, 09h47
  3. Interruption d'un Thread
    Par doudblast dans le forum Concurrence et multi-thread
    R�ponses: 3
    Dernier message: 11/03/2006, 17h30
  4. interrupt() de la classe thread
    Par canigu dans le forum Concurrence et multi-thread
    R�ponses: 2
    Dernier message: 25/12/2005, 14h01
  5. Interruption de thread
    Par bigben89 dans le forum Windows
    R�ponses: 2
    Dernier message: 13/10/2005, 10h41

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