2010-08-21 3 views
4

J'ai une haute tâche de CPU/mémoire liée que je voudrais exécuter mon programme Scala en parallèle. Donc, j'utilise le framework Actors (en utilisant receive dans une boucle while (true)). J'appelle la méthode start sur l'acteur et je lui envoie des milliers de messages à traiter.Comment utiliser pleinement tous les cœurs en utilisant des acteurs Scala?

Pendant l'exécution du programme (environ une heure), seulement 100 à 120% de la CPU est utilisée. La machine a 8 noyaux. L'acteur ne devrait-il pas engendrer plusieurs threads pour utiliser tous les 8 cœurs, et je devrais voir une utilisation proche de 800%? Ou est-ce que je suis supposé instancier 8 acteurs et m'envoyer chacun des messages (ou plutôt les faire tous lire à partir d'une file d'attente concurrente)?

Merci.

+0

J'ai cliqué sur la coche, est-ce? – Jija

Répondre

6

Non. Un seul acteur est garanti d'exécuter exactement sur un thread à la fois, donc l'accès à son état n'a pas besoin d'être synchronisé. Si vous voulez répartir votre problème sur plusieurs cœurs, vous avez besoin de plusieurs acteurs.

Questions connexes