XNA: Comment fonctionne le filetage?

9

Je voudrais implémenter le filetage dans mon jeu XNA mais je ne sais pas comment les choses fonctionnent lors de la compilation pour la XBOX 360. Quelqu'un pourrait-il développer cela?

Par exemple, combien de threads XBOX prend-il en charge? Je me rends compte que XNA utilise une version spéciale du Compact Framework. Comment cela affecte-t-il le code pendant le développement? Dois-je implémenter les choses différemment lors du développement pour XBOX que pour Windows?

Je vous remercie.

pek
la source

Réponses:

13

Fondamentalement, la Xbox 360 a 6 threads matériels, répartis sur 3 cœurs. Deux d'entre eux sont réservés au framework xna et à l'utilisation générale du système. Le thread fonctionne de la même manière que sur le framework .net sur Windows, sauf que vous obtenez une méthode supplémentaire, SetProcessorAffinity . Contrairement à Windows, la xbox ne fait aucune planification de thread fantaisie pour vous, vous devez donc lui dire sur quel thread matériel pour exécuter votre thread.

Il existe de bons pools de threads compatibles xbox, consultez Google si vous avez besoin d'un exemple de code, mais si vous êtes confiant avec le threading dans les fenêtres, cette page msdn devrait vous donner tout ce dont vous avez besoin.

Cubed2D
la source
3
Exactement. Juste pour compléter l'image, les fils sont répartis comme suit: RHRHCH. R = Réservé pour XNA. H = noyau «hyperthreaded». C = noyau physique
Jonathan Dickinson
Je n'appellerais pas les deux threads matériels par cœur "physiques" contre "hyperthreadés" en raison de la différence entre la technologie et la mise en œuvre d'Intel: arstechnica.com/old/content/2005/06/xbox360-2.ars
Oskar Duveborn