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 :

Executer deux fonctions en m�me temps


Sujet :

Threads & Processus C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Invit�
    Invit�(e)
    Par d�faut Executer deux fonctions en m�me temps
    Salut tout le monde
    Je viens demander conseils sur ce forum pour un petit probl�me. Je souhaiterais que deux fonctions s'ex�cutent en m�me temps. Je pense qu'il faut utiliser le multithreading mais le probl�me c'est que je ne m'y connais pas trop la-dedans, si vous pouvez m'aider
    Merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 131
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 131
    Billets dans le blog
    150
    Par d�faut
    Bonjour,

    Utiliser un thread ( ou deux ) permetra d'executer plusieur fonctions en m�me temps.
    Tu es sur quel syst�me?

    Sous linux je connais les threads posix qui se font avec fork().
    Sous windows je connais moins, mais je suis sur que pour les deux syst�mes tu trouvera de la doc sur ce site.

    Par contre, faire un thread, implique qu'il faut faire une gestion de cas qu'on ne trouve pas lors d'un programme monothread.
    Par exemple , un des cas possible c'est que les deux threads veulent acc�der en �criture au m�me fichier. Pour r�gler ce probl�me, on bloc l'acc�s du fichier au deuxi�me thread en utilisant un s�maphore ( ou autre mutex ), qui sera partageait par les deux threads, pour renseigner sur la disponibilit� de la ressource.
    ( Je suis aussi sur que tu trouvera de plus ample explication des les diff�rentes pages du site )
    Vous souhaitez participer � la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui conna�t l'erreur, conna�t la solution.

  3. #3
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par LittleWhite Voir le message
    Sous linux je connais les threads posix qui se font avec fork().
    Attention, fork() ne cr�� pas un thread, cela cr�� un nouveau process.

    Un thread est une unit� d'ex�cution � l'int�rieur d'un process. Toutes les variables globales du process sont visibles par tous les thread du process. Tous l'espace m�moire du process est accessible par le thread.

    fork() va cr�er un nouveau process avec une copie de l'espace m�moire tel qu'il est au moment du fork().
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par pitt77 Voir le message
    Je viens demander conseils sur ce forum pour un petit probl�me. Je souhaiterais que deux fonctions s'ex�cutent en m�me temps. Je pense qu'il faut utiliser le multithreading mais le probl�me c'est que je ne m'y connais pas trop la-dedans, si vous pouvez m'aider
    Attention toutefois : ex�cuter deux fonctions r�ellement en m�me temps impose d'avoir deux c�urs... Sinon, une seule des deux s'ex�cutera, et elle basculeront de l'une � l'autre toutes les 20 ms environ (ce qui ne t'aidera pas beaucoup si elles s'ex�cutent en moins de temps que �a !!).

    Si par contre tu as une fonction d�di�e par exemple � la gestion des entr�es utilisateur et l'autre en attente d'un �v�nement quelconque (arriv�e de donn�es par une socket, transfert depuis/vers le disque, etc.), alors par contre m�me sur un seul c�ur tu auras un gain de performances int�ressant.

    Il faudrait que l'on sache sur quel syst�me tu travailles, ainsi que ton compilateur, de fa�on � pouvoir t'orienter vers des solutions ad�quates.

    Citation Envoy� par ram-0000 Voir le message
    Attention, fork() ne cr�� pas un thread, cela cr�� un nouveau process.
    Je confirme, et �a n'a du coup plus rien � voir avec un thread, notamment � cause de l'isolation de la m�moire entre deux processus.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Invit�
    Invit�(e)
    Par d�faut
    Merci pour vos r�ponses
    En fait ce que je voudrais faire c'est ex�cuter une fonction attendre quelque chose tout en continuant � utiliser le programme, en ce moment d�s que je mets la fonction attendre mon programme se bloque car c'est la fonction attendre qui est ex�cut�e.

    EDIT : Je suis sous windows vista (mais je souhaite faire un code portable), j'utilise Code::Blocks avec le compilateur MinGW.

  6. #6
    Membre confirm�

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Par d�faut
    Juste pour clarifier ce que tu cherches : Tu veux lancer une fonction en "parall�le" de ton programme (si je puis m'exprimer ainsi!) qui attend un �venement provoquer par le programme principal pour executer une action?

    Si c'est effectivement �a, il faut en effet chercher du c�t� des threads.

  7. #7
    Invit�
    Invit�(e)
    Par d�faut
    En gros ce que je souhaite c'est une sorte d'option dans mon programme qui emp�che la mise en veille, pour �a j'appelle la fonction SetThreadExecutionState mais il faut que je l'appelle periodiquement donc toutes les 55 secondes j'appelle la fonction mais cela bloque mon programme qui reste bloqu� dans la boucle "appeller fonction; attendre 55s"

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par pitt77 Voir le message
    En gros ce que je souhaite c'est une sorte d'option dans mon programme qui emp�che la mise en veille, pour �a j'appelle la fonction SetThreadExecutionState mais il faut que je l'appelle periodiquement donc toutes les 55 secondes j'appelle la fonction mais cela bloque mon programme qui reste bloqu� dans la boucle "appeller fonction; attendre 55s"
    �a, par contre, ce n'est aucunement portable, c'est sp�cifique Windows...

    Et je crois bien qu'il existe une API Win32 permettant d'interdire la mise en veille, qui doit certainement requ�rir d'�tre ex�cut�e sous un compte Administrateur d'ailleurs.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par pitt77 Voir le message
    En fait ce que je voudrais faire c'est ex�cuter une fonction attendre quelque chose tout en continuant � utiliser le programme, en ce moment d�s que je mets la fonction attendre mon programme se bloque car c'est la fonction attendre qui est ex�cut�e.
    C'est effectivement une utilisation correcte d'un thread, y compris sur un syst�me � un seul c�ur.

    Citation Envoy� par pitt77 Voir le message
    EDIT : Je suis sous windows vista (mais je souhaite faire un code portable), j'utilise Code::Blocks avec le compilateur MinGW.
    Code portable ? Avec des threads ? Pas gagn� d'avance, �a... Tu vas �tre oblig� de passer par une librairie d'abstraction afin d'avoir la m�me interface entre le monde Windows et le monde Unix/Linux.

    Le choix est (heureusement !) vaste, mais de l� � dire quelle est la meilleure... J'aurais tendance � dire "celle d�j� disponible avec ton framework", mais �a te rend alors d�pendant d'un framework donn� (ex : QT).

    Pour l'utilisation d'une librairie "limit�e" � la seule gestion des threads, tu peux l� aussi t'exposer � des soucis de portabilit� car tu n'auras pas acc�s � d'autres syst�mes que ceux support�s par la librairie en question.

    Apr�s, parmi les choix possibles de librairies supportant un syst�me de threads portable, tu as : Boost, ACE, POCO, Win32 Pthreads, et j'en oublie des tonnes et des tonnes...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. R�ponses: 20
    Dernier message: 04/04/2014, 11h17
  2. Actualiser un TCD et executer une autre fonction en m�me temps
    Par lbar012001 dans le forum Macros et VBA Excel
    R�ponses: 4
    Dernier message: 04/02/2008, 09h08
  3. lancer deux fonctions en m�me temps
    Par youp_db dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 28/09/2006, 12h11
  4. [JFrame]pb de lancement de deux JFrame en m�me temps
    Par spoutyoyo dans le forum Agents de placement/Fen�tres
    R�ponses: 8
    Dernier message: 24/08/2004, 15h33
  5. Lancer deux sons en m�me temps...
    Par Julien_riquelme dans le forum API, COM et SDKs
    R�ponses: 1
    Dernier message: 03/05/2003, 17h00

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