私は Eiffels SCOOP をいじっています。
私のプログラムでは、多数のワーカーが並行して実行されます。利用可能なプロセッサと同じ数のワーカーを作成したいと考えています。
エッフェルで利用可能なプロセッサの数を見つけるための「簡単な」方法はありますか?
私は Eiffels SCOOP をいじっています。
私のプログラムでは、多数のワーカーが並行して実行されます。利用可能なプロセッサと同じ数のワーカーを作成したいと考えています。
エッフェルで利用可能なプロセッサの数を見つけるための「簡単な」方法はありますか?
現在の標準ライブラリにはそのような機能はありません。ただし、次を使用できます。
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