salut
je risque de dire une connerie mais est il conseillé d'utiliser les Threads dans un programme pour bénéficier d'un architecture Duo Core...
ou alors j'ai vraiment rien compris
salut
je risque de dire une connerie mais est il conseillé d'utiliser les Threads dans un programme pour bénéficier d'un architecture Duo Core...
ou alors j'ai vraiment rien compris
Bonjour,
A mon avis, tous les threads d'un programme sont exécutés sur le même core.
je ne sais pas trop mais il y a bien 3 étapes ?:
- programme --system exploitation
- system-groupe processeurs
- groupe processeurs--coeur1 ou coeur2 ou les deux
non?
Bonjour,
En fait un programme multi-threadé se lancera sur plusieurs coeurs uniquement si l'OS est compatible et est capable de dispatcher sur les différents coeurs du processeur.
Bonjour,
Aujourd'hui, au sens Thread programmation, tous les programmes sont multithread (comment un navigateur par exemple, pourrait gérer sans threads les interactions avec l'utilisateur et en même temps le rendu d'une ou plusieurs GIF animée). Pourtant, si tu écris un script qui fait une opération très lourde sous un navigateur, le processus ne va utiliser que 50% du Core 2 Duo ne bloquant qu'un seul core et par là-même tous les autres process qui tournent sur ce core.
Bonjour,
Bon, le plus simple pour s'en rendre compte, c'est d'effectuer des tests. Donc j'ai écris un petit programme tout simple qui fait une opération lourde avec 1 thread : utilisation au maximum de 50% du CPU (donc de 1 core) ; avec 2 thread : utilisation au maximum de 100% du CPU (donc de 2 core). Il faut croire que .NET est donc capable de dispatcher les threads d'un même programme sur plusieurs core.
Ce n'est pas particulièrement .NET qui fait le dispatch, mais l'OS.
La runtime CLR ne réinvente pas la roue et n'a pas son propre Ordonnanceur intégré... qui fait mieux que l'OS. Il utilise l'ordonnanceur système.
Si ta version de windows gere parfaitement les multicore alors ton prog multithread utilisera correctement les multicores.
Pour la remarques commes les navigateurs, en réalité, c'est très différent. Rien ne permet d'affirmer quils sont multithreadés dans la mesure où certaines opérations longues et fastidieuses bloquent le navigateur en entier... aussi bien l'ui du navigateur que le rendu de la page. Générallement c'est le cas d'une appli winform pseudo multithreadé mal codée.
Une architecture multithread peut également etre confinée à un seul des cores disponibles. Tout dépend de la façon dont est programmé l'application.
A titre indicatif, les navigateurs on souvent tendance à utiliser des horreurs du genre, j'ai un thread de fenetrage, et à chaque fois que celuici lance un évenement j'exécute le code a l'intérieur.... c'est avec ce type de programmation que le navigateur ne dépasse pas 50% du temps CPU. En effet, c'est le thread de fenetrag qui exécute tout, l'event n'est pas dispatché dans un thread séparé !
Nombre d'applications male conçues font également de la sorte.
En réalité cela vient beaucoup des croyances des développeurs qui croient que les délégates sont exécuté dans des threads séparés ne pensant pas du tout qu'ils sont exécuté dans le thread appelant, qui dans le cas d'un winform est le thread qui gere le controle fenetré.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager