4 votes

Nombre de processeurs disponibles avec Eiffel

Je joue avec Eiffels SCOOP.

Dans mon programme, un groupe de travailleurs s'exécute en parallèle. Je veux créer autant de travailleurs que de processeurs disponibles pour moi.

Existe-t-il un moyen "facile" en Eiffel pour trouver le nombre de processeurs disponibles ?

3voto

Julia R Gilbert Points 41

Une telle fonctionnalité n'existe pas dans la bibliothèque standard actuelle. Cependant, vous pouvez utiliser ce qui suit :

frozen available_cpus: NATURAL_8
        -- Number of logical CPUs reported by OS.
    external
        "C inline use %"eif_scoop.h%""
    alias
        "[
            #ifdef EIF_WINDOWS
                SYSTEM_INFO sysinfo;
                GetSystemInfo (&sysinfo);
                return sysinfo.dwNumberOfProcessors;
            #elif EIF_MACOSX
                int nm [2];
                size_t len = 4;
                uint32_t count;

                nm [0] = CTL_HW; nm [1] = HW_AVAILCPU;
                sysctl (nm, 2, &count, &len, NULL, 0);

                if(count < 1) {
                    nm[1] = HW_NCPU;
                    sysctl(nm, 2, &count, &len, NULL, 0);
                    if (count < 1) {count = 1;}
                }
                return count;
            #else
                return sysconf (_SC_NPROCESSORS_ONLN);
            #endif
        ]"
    end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X