J'ai été incapable de trouver une bonne explication de la raison pour laquelle un exécutable multithread voudrait définir le ProcessorAffinity par thread. Pour moi, il semble que cela tente de remplacer le CLR/système d'exploitation; quelque chose que je ne pense pas être assez intelligent pour le faire. Pourquoi devrais-je participer à la définition de l'attribut ProcessorAffinity pour les threads sur un système multicœur?Pourquoi définir l'attribut ProcessorAffinity pour un thread?
Répondre
Si vous indiquez à un thread de s'exécuter avec une affinité non définie, il sera autorisé à s'exécuter sur n'importe quel core. Cela signifie cependant que quand un noyau est occupé, il va déplacer votre fil sur un noyau différent, cet arrêt et le mouvement possible est appelé Context Switch. Dans la plupart des cas, vous ne le remarquerez jamais, cependant, dans des cas comme les consoles de jeu, les changements de contexte peuvent être un processus étonnamment coûteux.
Dans ces cas, il pourrait être préférable de déplacer quelque chose comme la boucle audio et la boucle vidéo sur des cœurs "privés" où ils sont verrouillés sur ce noyau, et ne changeront pas, donnant des optimisations possibles.
Seuls des types d'applications très spécifiques bénéficient vraiment de l'utilisation de l'affinité manuelle, principalement des applications avec des processus parallèles à long terme. Je pourrais imaginer qu'il soit utilisé dans des scanners de virus, ou des applications mathématiques lourdes comme Seti @ Home.
Un autre avantage théorique est que le processeur peut utiliser son cache si vous avez de petits processus qui s'exécutent plusieurs fois. Mais encore une fois, en réalité, vous auriez besoin d'un type d'application vraiment spécifique pour faire la différence.
Je n'ai jamais eu le besoin de m'en préoccuper. Habituellement, le système d'exploitation sait le mieux.
Mise en cache du processeur.
Et peut l'utiliser pour étrangler.
Peut avoir un processus de priorité inférieure que vous ne voulez pas dominer.
Sur une machine à 4 processeurs, il est possible de la limiter à un processeur.
L'accélération peut également être effectuée avec la priorité de filetage.
Ne l'utiliserait que si le processus bénéficiait de la mise en cache.
Je l'aime parce que dans le gestionnaire de tâches, je peux le voir marteler un processeur.
- 1. Définir un sun.rmi.transport.tcp.handshakeTimeout pour un seul thread?
- 2. Définir l'identité du thread
- 3. Comment définir un Arraylist statique dans un environnement sans thread
- 4. comment définir un nom de thread dans MacOSX
- 5. Comment définir un SecurityManager pour ce thread et non pour System?
- 6. Pourquoi définir le bit d'interruption dans un appelable
- 7. Pourquoi un TidTCPClient dans un thread séparé bloque-t-il le thread principal?
- 8. comment détruire un thread, suspendre/suspendre un thread, reprendre/runAgain un thread?
- 9. C# Thread Les paramètres changent pendant l'exécution du thread - pourquoi?
- 10. Comment définir le nom du thread?
- 11. Un thread-safe thread-safe std :: cerr pour C++
- 12. Pourquoi avons-nous besoin d'utiliser NSAutoreleasepool pour chaque thread?
- 13. Pourquoi dormir dans un thread n'a pas de sortie puts?
- 14. Utilisation d'exceptions dans un boost :: thread thread
- 15. Pourquoi un thread survit à la méthode principale en Java?
- 16. Pourquoi le démarrage d'un thread est-il bloqué par un autre thread?
- 17. Pourquoi un serveur UDP n'aurait-il pas besoin de thread?
- 18. Définir la culture pour un asp.net RangeValidator
- 19. pourquoi ne pas pouvoir définir une méthode à l'intérieur de run() méthode du thread
- 20. Est-il possible de définir CultureInfo pour une application .NET ou simplement un thread?
- 21. HttpServlet n'implémente pas le thread exécutable ou le thread étendu, pourquoi est-il thread-able?
- 22. Comment faire pour rendre un visuel sur un autre thread
- 23. pourquoi définir « extern SQLITE_EXTERN »
- 24. Informations de thread pour un processus
- 25. didSelectRowAtIndexPath pour appeler un nouveau thread
- 26. Thread pour attraper un BluetoothSocket InputStream.read() timeout
- 27. Pourquoi définir un modèle dans un style en xaml, WPF?
- 28. Variable mutable dans un thread thread-safe?
- 29. Thread dangereuse décrémentation/incrémentation - pourquoi principalement positif?
- 30. schema.ini pour définir un csv
Mise en cache du processeur – Paparazzi
Licence par processeur. – Steve
Est-ce que quelqu'un a vu des nombres qui montrent que le paramètre ProcessorAffinity a globalement des avantages? –