4

私は Eiffels SCOOP をいじっています。

私のプログラムでは、多数のワーカーが並行して実行されます。利用可能なプロセッサと同じ数のワーカーを作成したいと考えています。

エッフェルで利用可能なプロセッサの数を見つけるための「簡単な」方法はありますか?

4

1 に答える 1

3

現在の標準ライブラリにはそのような機能はありません。ただし、次を使用できます。

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
于 2012-11-15T18:46:44.213 に答える