petit éclaircissement sur les threads

prepa75prepa75 Membre
Bonjour bonjour

Souhaitant améliorer mon Programme "Nombre premier",j'ai décidé d'y mettre un bel interface graphique,et une barre de progression.
Sans oublier un bouton stop qui arrete le processus et un bouton pause qui permet de mettre en pause le calcul (on s'en serai douter  :D )

Ma question est la suivante : lorsqu'on lance le moniteur d'activité chaque PID correspond à  un thread non ? donc on peut avoir une infinité de threads pour un programme c'est ça ? (dans les limites du système bien sur  :D )
une deuxième question : un ami s'est récemment acheter un macpro et il m'as dit : j'ai 4 coeurs soit 8 threads. ça ne peut donc pas être les même threads  B)

si on créer une app qui à  par exemple 2 threads, elles auront chacun un PID différent c'est bien ça ?

Merci pour vos lumières,je préfererai partir sur de bonnes bases pour utiliser NSThread.

PS : je me suis servi de ce tuto pour comprendre comment on utilise simplement NSThread : http://pommedev.mediabox.fr/index.php?topic=3235.0

Réponses

  • mpergandmpergand Membre
    juillet 2010 modifié #2
    Tu fais une confusion entre process et thread !

    Un process, c'est typiquement une application.
    Un thread, c'est un bloc d'instructions qui s'exécute de façon indépendante au sein d'une application.

    http://linux-attitude.fr/post/processus-et-threads
  • prepa75prepa75 Membre
    13:57 modifié #3
    Merci pour ton lien,il clarifie mes interrogations  Bon ba ya plus qu'a coder  donc les 8 threads sur le macpro ça correspond à  quoi alors en fait ?

    le PID correspond à  un processus qui peut lui même contenir plusieurs threads interréagissant (si le mot ça existe  :P ) entre eux  ou pas.
    c'est bien ça ?
  • mpergandmpergand Membre
    13:57 modifié #4
    Oui, c'est ça.

    Pour le MacProc avec 4 coe“urs et 8 threads, ça veut dire qu'il possèdent 4 coe“urs physiques et 8 coe“urs virtuels.
    Le processeur est donc optimisé pour gérer 8 threads. Il peut bien sûr en gérer bien plus, mais cela a un coût !

    Si dans ton appli, tu t'amuses à  créer 100 threads, les performances vont s'écrouler, car le système va passer son temps à  basculer d'un thead à  l'autre.

    On peut affecter une priorité à  un thread:
    - haute priorité pour du traitement nécessitant des timings précis (ex: core audio)
    - basse priorité pour du traitement en tâche de fond.
  • prepa75prepa75 Membre
    13:57 modifié #5
    ok donc c'est optimisé pour lancer 8 threads en parallèle...c'est vraiment un gros monstre cette chose  :P
    et sur mon MBP core2duo 2,2Ghz je suppose que j'ai 2 coeurs physique et ... 2 coeurs virtuels ?? :'(

    si j'ai tout compris : si mon mac est optimisé pour 2 threads, alors si sur l'un je lance un calcul de nombre 1er et sur un autre je lance l'affichage en temps réel du nombre traité ainsi qu'une barre de progression et (soyons fou  :P...) je lance un 3ème thread pour déterminer les nombres 1er qui permettent de diviser un nombre choisi , alors dans ce cas l'ordi gérera les threads par priorité choisi par le programmeur et je ne pourrai pas tout faire en même temps. mais sur le MacPro si  :'( :P
  • mpergandmpergand Membre
    juillet 2010 modifié #6
    "tout faire en même temps" en pratique ce n'est jamais le cas, mais les ordis modernes sont assez rapide pour nous en donner l'illusion.

    C'est le sheduler qui se charge de distribuer la puissance de calcul aux différentes tâches.
    [url=http://fr.wikiversity.org/wiki/Système_d'exploitation/Unix]http://fr.wikiversity.org/wiki/Système_d'exploitation/Unix[/url]
    Ton appli ne se voit pas attribuer un thread au démarrage, mais c'est le système qui va attribuer un temps d'exécution pour chacun de tes threads de façon parallèle ou séquentielle en fonction des ressources disponibles.
  • prepa75prepa75 Membre
    13:57 modifié #7
    Merci là  c'est bon j'ai tout compris (ce qui me faut pour mon appli du moins  :P )
    ça doit être amusant à  programmer un système d'exploitation,lorsque l'on voit la complexité sur une seule application ça fait peur  B)
  • GreensourceGreensource Membre
    13:57 modifié #8
    Si je ne me trompe pas sur ton Macbook Pro tu as 4 Threads virtuel, Intel ayant mis sa techno Hyper Thread partout.
Connectez-vous ou Inscrivez-vous pour répondre.