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 :

utilisation des threads


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut utilisation des threads
    Bonjour,

    - Dans quel cas on utilise les threads ?

    - Quel sont les avantages et les inconvénients d'utiliser les threads ?

    - C'est possible d'utiliser les threads dans un programme C ?

    - Quelle est la différence est d'utiliser les threads sur une seule machine ou sur plusieurs ?

    - J'ai deux traitements (fonct1(X,Y) semblables dans mon programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    P=fonct1(X, Y); //traitement 1
    T=fonct1(P, Z); //traitement 2

    On a le traitement 2 a besoin de résultat de résultat (P) de traitement 1.
    Dans ce cas, on peut utiliser les threads ?

    Merci.

  2. #2
    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 siempre Voir le message
    - Dans quel cas on utilise les threads ?
    Quand on a besoin d'exécuter plusieurs choses de façon "simultanée" (parallélisme), ou que l'on désire rendre asynchrones (= non bloquantes) des actions qui, normalement, le sont (interface homme/machine notamment).

    Citation Envoyé par siempre Voir le message
    - Quel sont les avantages et les inconvénients d'utiliser les threads ?
    Avantages : rendre possible les éléments ci-dessus, donc rendre un programme plus rapide et/ou plus réactif.
    Inconvénients : c'est plus complexe à programmer, et dans le cas du parallélisme, il n'est pas toujours possible de paralléliser un traitement (cf. dernier point).

    Citation Envoyé par siempre Voir le message
    - C'est possible d'utiliser les threads dans un programme C ?
    Oui, tu peux les utiliser dans à peu près tous les langages de programmation un minimum décents.
    Les threads sont avant tout supportés par le système d'exploitation : or, les OS 32 bits classiques (Windows, Linux et MacOS) supportent tous les threads sans aucun problèmes.
    Certains Unix, par contre, ne permettent pas d'utiliser des threads, on est obligé d'utiliser des processus (le fameux "fork") pour effectuer des tâches en parallèle. C'est un tout autre mode de fonctionnement, d'ailleurs.
    Enfin, certains langages implémentent un principe similaire aux threads de façon native, c'est à dire quel que soit l'OS derrière (Ada, notamment). Toutefois, la plupart des langages supportant les threads (ex : Java) s'appuient sur le système d'exploitation sous-jacent pour tenir des performances décentes.

    Dans le cas du C, il s'appuie intégralement et exclusivement sur le système d'exploitation. Tu peux utiliser les threads natifs de l'OS (Win32 sous Windows, pthread sous Linux), ou utiliser des librairies portables qui rendent l'OS "transparent" (pthread, par exemple). La plupart de ces librairies sont par contre pour le C++ et non pas le C.

    Citation Envoyé par siempre Voir le message
    - Quelle est la différence est d'utiliser les threads sur une seule machine ou sur plusieurs ?
    Un thread est forcément sur la même machine que le processus qui l'exécute, on ne peut pas déporter un thread sur une autre machine.
    Tu dois vouloir parler de processus distribués (= plusieurs processus en collaboration, tournant sur plusieurs machines différentes), et ça, ça n'a pas grand-chose à voir avec les services que rendent les threads.

    Côté parallélisme / augmentation de vitesse des programmes, un traitement distribué doit tenir compte du temps de transfert des données entre les diverses machines, ce qui rend le principe même inefficace pour certains algorithmes. Réciproquement, il y a des algos qui bénéficient très peu du threading, et qui sont par contre très accélérés par une distribution.

    Bref, tu choisis le type de parallélisme en fonction du problème à résoudre.

    Citation Envoyé par siempre Voir le message
    - J'ai deux traitements (fonct1(X,Y) semblables dans mon programme.
    <snip>
    On a le traitement 2 a besoin de résultat de résultat (P) de traitement 1.
    Dans ce cas, on peut utiliser les threads ?
    Non, tu ne peux pas. Ou, pour être plus précis, ça ne servira à rien. Les threads ne sont efficaces QUE si les traitements sont indépendants les uns des autres, et là, ce n'est pas le cas : le calcul est impérativement séquentiel.

    Tu pourrais paralléliser si tu avais plusieurs calculs de ce genre à faire en même temps (= plusieurs triplets (X,Y,Z) à calculer), chaque thread s'occupant d'un calcul. Mais le calcul "intermédiaire", celui appelant deux fois fonct1, ne pourrait pas être parallélisé.
    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. Avis sur la bonne utilisation des Threads
    Par Pitivier dans le forum Général Java
    Réponses: 8
    Dernier message: 28/11/2006, 20h07
  2. connexion socket utilisant des threads
    Par alceste dans le forum C++
    Réponses: 16
    Dernier message: 14/10/2006, 12h00
  3. [Débutant]Utilisation des Threads
    Par maniolo dans le forum Débuter avec Java
    Réponses: 19
    Dernier message: 10/07/2006, 11h31
  4. Utilisation des threads
    Par Valinor dans le forum Linux
    Réponses: 2
    Dernier message: 30/11/2005, 16h41
  5. Utilisations des Threads
    Par phoenix440 dans le forum Réseau
    Réponses: 15
    Dernier message: 21/08/2005, 17h19

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