petit éclaircissement sur les threads
prepa75
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 )
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 )
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
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
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 )
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 )
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
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
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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
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 ?
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.
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
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.
ça doit être amusant à programmer un système d'exploitation,lorsque l'on voit la complexité sur une seule application ça fait peur