2012-11-15 26 views
4

我正在用Eiffels SCOOP玩弄。使用Eiffel的可用處理器數

在我的程序中,一羣員工並行運行。我想創造儘可能多的工人,因爲我可以使用處理器。

在埃菲爾找到可用處理器的數量和「簡單」方法嗎?

回答

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 
+0

三年後,這個答案仍然正確嗎?還是有一些新的東西? – Birliban

+1

@Birliban,沒有添加任何新功能,所以答案應該是正確的。 –