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 :

mettre un programme en pause


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut mettre un programme en pause
    c'est surement un probleme recurrent, mais une petite recherche, si elle m'a donné des indications, n'a pas repondu a toutes mes questions :

    je developpe une appli de calcul scientifique un poil violente ( record de temps de calcul a plus de 4 jours.. ). vu qu'on a pas mal de données a traiter, l'idee serait de pouvoir mettre le programme en pause.. comme ca on l'installe sur tous les ordis des collegues, il le mette en pause le matin, le "depause" le soir et roulez jeunesse.

    donc je suppose qu'il faut utiliser du multithreading : un pour le programme, un qui attend l'appui d'une touche.

    le hic : je programme sous linux, et le programme va tourner sous windowS. et j'essaie de reduire au maximum les dependances de mon prog ( pour l'instant c'est du C++ pur), mais quelquechose me dit que je vais etre obligé de faire appel a une librairie si je veux du multiplateforme.. ( ou ya t il du multithread dans le C "standard" ?? )

    voila, si quelqu'un pouvait me donner quelque indications, me conseiller une librairie simple et facilement installable sous linux/windows et me donner vite fait la marche a suivre (je connais les concepts generaux du multithread, mais je n'en ai jamais fait, et j'aimerais faire quelque chose de "propre" !!)

    merci d'avance !!

  2. #2
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut
    Ce genre de pause n'est pas tres robuste (arret machine involontaire ou plantage de l'ordi par un autre soft par exemple) et le process va s'en cesse demander si il doir reprendre.

    Bref, je te conseille plutot une sauvegarde depuis n'importe (facon de parler) qu'elle endroit de ton soft sur le disque dur et un processus de reprise au redemarrage.

  3. #3
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Plutôt que de mettre en pause le programme, tu pourrais le passer en priorité minimale le matin (avec la commande nice sous Linux, je ne sais pas sous Windows, mais ça doit se trouver) et réaugmenter sa priorité le soir.
    Comme ça, il profitera en plus des temps d'inactivité des machines dans la journée.

  4. #4
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    pour la sauvegarde : oui, ca serait plus judicieux. mais ca n'empeche pas que je doive attendre une touche pour interrmopre le prgramme et sauver les données.. donc re multithread !

    pour le nice : oui, je connais, mais :

    - sur mon ordi a moi ( un portable ) nice n'empeche pas de chauffer, ca finit par faire ramer l'ordi de toute facon.
    - nice n'existe pas sous windows.

    par contre, je suppose qu'il doit y avoir des commandes C++ pour modifier la priorité du programme, ca ca pourrait etre sympa ( faire un truc comme les seti@home et autre ) mais la par contre je ne sais pas du tout quelle est la marche a suivre !

  5. #5
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Citation Envoyé par jobherzt
    par contre, je suppose qu'il doit y avoir des commandes C++ pour modifier la priorité du programme
    Tu auras du mal à faire du standard puisque ça s'appuie sur des mécanismes système, que ce soit la gestion de priorité ou la suspension d'un thread.
    La seule façon que je vois de faire du portable, c'est de développer avec les threads POSIX, qui peuvent aussi tourner sous Windows (ça, je n'ai jamais fait sous Windows, mais tu trouveras facilement l'info).

  6. #6
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    Citation Envoyé par joellel
    Tu auras du mal à faire du standard puisque ça s'appuie sur des mécanismes système, que ce soit la gestion de priorité ou la suspension d'un thread.
    c'est ce qui me semblait.. je pense que je vais retenir la gestion de priorité "a la main", ou avec un fichier batch..

    merci bien !!

  7. #7
    tut
    tut est déconnecté
    Membre éclairé
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par défaut
    Je vois plusieurs solutions :
    1 - je présume que ton appli doit avoir une boucle principale...
    tu pourrais essayer d'y caler une instruction Sleep() par exemple, c'est une façon peu élégante (mais très simple) de rendre un processus peu gourmand.
    2 - tu lances ton calcul dans un thread créé à partir du thread principale, et lors de la création du thread de calcul, tu lui spécifies la priorité relative inférieure basse.

    D'autres solutions éxistent encore, mais il faut que tu donnes plus de renseignements sur tes contraintes : protabilité, graphique/console, OS, etc...

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

Discussions similaires

  1. Fenêtre tk active sans mettre le programme en pause
    Par nikaulas dans le forum Général Python
    Réponses: 5
    Dernier message: 08/01/2014, 12h04
  2. mettre un programme en pause
    Par Mydriaze dans le forum Général Python
    Réponses: 5
    Dernier message: 23/11/2012, 14h00
  3. [NASM] Mettre le programme en pause - boucle infinie
    Par Voitures007 dans le forum x86 16-bits
    Réponses: 6
    Dernier message: 19/12/2010, 17h59
  4. Mettre le programme en pause en attendant un événement
    Par bigboss39 dans le forum Tkinter
    Réponses: 1
    Dernier message: 08/04/2009, 15h10
  5. Programmer une pause brève
    Par NeoMan dans le forum Assembleur
    Réponses: 14
    Dernier message: 28/04/2003, 01h59

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