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 :

2 fonctions qui tournent en même temps


Sujet :

C

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Points : 0
    Points
    0
    Par défaut 2 fonctions qui tournent en même temps
    voilà, je voudrais savoir s'il est possible de fire tourner 2 fonctions en même temps, ou si l'on est oblié d'attendre que la première soit éxécuté pour que la deuxième se lance.
    En fait, j'ai en tête les graphcet. Je suis sur que vous connaissez, et avec ces graphcets, on pouvait creer 2 fonctions qui tournaient en même temps. Je voudrais faire la même chose.
    Par exemple, une fonction quicopie un fichier et pendant ce temps, une fonction qui lit un fichier.
    @+

  2. #2
    Membre régulier

    Inscrit en
    Juin 2002
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 18
    Points : 105
    Points
    105
    Par défaut
    C'est presque aussi facile à implémenter qu'à écrire : utilise les threads (fais une recherche sur le forum avec comme mot clé thread ou threads, tu aras pas mal de résultats je pense).

  3. #3
    Membre averti

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Points : 307
    Points
    307
    Par défaut
    Ça se fait par les threads qu'il faut crée explicitement.

    Malheureusement, ce n'est encore géré par la librairie standard.
    De plus, la signature de la fonction est imposée.

    Sous linux, il faut chercher pthread il me semble.

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Points : 105
    Points
    105
    Par défaut
    euh, je vais peut etre dire une betise mais tant pis:
    on y arriverait pas avec un simple fork() ? (et un ou deux élements de synchronisation) ?

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Avec fork tu ne lance pas deux taches en parallele dans un meme processus, tu duplique le processus, le nouveau processus ne partage pas le meme espace memoire que le premier.

  6. #6
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    bah si tu veux partager il y a vfork().
    mais bon ce n'est pas la question. il vaut mieux qu'il utilise les threads. sous unix c'est pthread (pthread_create, pthread_init, ...).
    sous unix il y a aussi clone.

    tu as le choix pour faire cela. pour synchroniser la chose. les semaphores te seront enormement utiles.

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par nyal
    bah si tu veux partager il y a vfork().
    Je la connaissais pas cette fonction !

    Ma remarque sur le partage de ressource etait plus un complement sur le fork qu'autre chose.

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Points : 0
    Points
    0
    Par défaut
    bon, en gros, avec ce que j'ai trouvé sur le forum, cela devrait donner un truc dans le genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    copierfichier(FILE *NomFich) // là, je declare mon thread
    { 
    copie(); 
    ExitThread(0); // là, je sort du thread
    } 
     
    void main() 
    { 
    // là, je lance mon thread
    CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)copier fichier,&valeur,0,NULL); 
     
    }
    voilà, je sais pas si c'est juste, sinon, c'est quoi les autres paramètres de la fonction create thread ( LPTHREAD_START_ROUTINE et le reste )
    Et donc, si je fais un programme qui fait une action dans le main, et lance un thread qui arrète la fonction précedente, çàmarchera tout de suite ?
    @+

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

Discussions similaires

  1. [PHP 5.4] putenv() affecte plusieurs scripts qui tournent en même temps
    Par Bioteck dans le forum Langage
    Réponses: 6
    Dernier message: 08/02/2015, 22h33
  2. Réponses: 4
    Dernier message: 06/08/2012, 00h41
  3. [Toutes versions] bouton qui descendent en même temps que l'ascenseur
    Par Mat08 dans le forum IHM
    Réponses: 2
    Dernier message: 13/08/2009, 14h43
  4. Réponses: 17
    Dernier message: 05/02/2009, 15h48
  5. Réponses: 3
    Dernier message: 04/03/2007, 19h00

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