Bonjour,
j'ai quelques question concernant le multi-threading et les CPUs. En faisant un recherche, j'ai trouvé cette discussion et c'est presque ce que je voulais savoir.
Avec l'instruction 'Runtime.getRuntime().availableProcessors()', on peut savoir combien de processeurs sont disponibles dans la JVM. Mais :
- est ce que par défaut tous les processeurs de la machine sont affectés à la JVM ?
- si j'ai tous les processeurs, est ce que je peux spécifier que j'en refuse 1 (ou N) ? Par exemple sur un QuadCore (ou plus), je souhaite imposer de toujours laisser un processeur de libre pour des opérations annexes de l'utilisateur. Si cela peut se faire, le gère t-on depuis les arguments de la JVM ou peut on le faire directement dans le code source ?
Question annexe... est ce que la l'instanciation d'un thread est couteuse ?
Par exemple, disons que j'ai N calculs à réaliser en parallèle et que je ne dispose que de deux processeurs. Est ce qu'il y a une GROSSE différence à créer deux threads et à leur affecter à tour de rôle les calculs ou puis simplement dire que je crée N threads avec un calcul par thread ?
Par ce que je fais du traitement d'images et j'ai beaucoup de calculs à réaliser, donc potentiellement beaucoup de threads à ouvrir OU
Merci par avance
Partager