Comment mon programme de Go de conserver tous les cœurs de PROCESSEUR occupé?

Goroutines sont légers processus qui sont automatiquement le temps en tranches sur un ou plusieurs threads du système d'exploitation par la Aller de l'exécution. (C'est un vraiment cool fonctionnalité de Go!)

Supposons que j'ai une demande concurrente comme un serveur web. Il y a beaucoup de choses qui se sont produites simultanément dans mon hypothétique programme, sans beaucoup de non-simultanées (la Loi d'Amdahl) ratio.

Il semble que par défaut, le nombre de threads du système d'exploitation en cours d'utilisation est actuellement de 1. Est-ce à dire qu'un seul cœur de PROCESSEUR utilisé?

Si je commence mon programme avec

runtime.GOMAXPROCS(runtime.NumCPU())

fera que donner raisonnablement efficace l'utilisation de tous les cœurs sur mon PC?

Est-il un "parallèle à la paresse" de bénéficier de la encore plus OS threads en cours d'utilisation, par exemple par le biais de certaines heuristiques

runtime.GOMAXPROCS(runtime.NumCPU() * 2)

?

InformationsquelleAutor Rick-777 | 2013-07-25