J'ai une COM écrite en Delphi 101 Berlin. Et j'écris un script pour appeler son API (juste une API, single-threaded, et chacun prend environ 1 minute pour finir).Comment le système d'exploitation peut-il utiliser tous les cœurs pour mon application?
Je lance le fichier vbs en utilisant cscript.exe (64 bits) (et j'utilise le simple job runner here), beaucoup de copies (donc il y a beaucoup de processus), en même temps.
Cependant, j'ai testé sur de nombreux PC (Windows 10 Pro), et il est observé que seulement environ 1 core est en cours d'exécution malgré le fait qu'il a beaucoup de cœurs. Par exemple, sur mes 2 CPU (HPZ800 Intel Xeon X5650, 6 cœurs chacun = 12 cœurs), seul 1 core est utilisé.
Si certains scripts quittent prématurément, l'utilisation de l'UC restante sera améliorée, mais tous ne totalisent pas plus d'un cœur.
Ma question est de savoir comment écrire du code pour bénéficier de multi-cœurs?
Vous dites "Je cours le fichier VBS en utilisant cscript.exe ... beaucoup de copies (donc il y a beaucoup de processus)". Avez-vous des preuves que de nombreux processus sont générés par cscript.exe? Il me semble assez clair que votre projet fonctionne comme un processus monothread. –
comme vous pouvez le voir dans la capture d'écran, il existe de nombreuses copies de cscript.exe (processus), sur mon application, il est seul thread. –
Aussi, juste parce qu'il y a beaucoup de processus en cours d'exécution, cela ne signifie pas que vous maximiserez vos processeurs. Cela dépend de la nature du processus. Si chaque processus fait un sleep() pendant 60 secondes, vous pourriez en avoir des milliers sans troubler votre processeur. –