Number of processors available using Eiffel

I play with Eiffels SCOOP.

In my program, a bunch of worker runs in parallel. I want to create as many workers for me as a processor.

Is there an “easy” way to find the number of processors available in Eiffel?

+4
source share
1 answer

There is no such function in the current standard library. However, you can use the following:

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 
+3
source

Source: https://habr.com/ru/post/1446250/


All Articles