#+private
package main
import "core:sys/darwin"
CTL_HW :: 6
HW_AVAILCPU :: 25
HW_NCPU :: 3
get_hardware_concurrency :: proc() -> int {
mib: [4]i32
num_cpu: i32
num_cpu_len: uint = size_of(num_cpu)
mib[0] = CTL_HW
mib[1] = HW_AVAILCPU
darwin.syscall_sysctl(&mib[0], 2, &num_cpu, &num_cpu_len, nil, 0)
if num_cpu < 1 {
mib[1] = HW_NCPU
darwin.syscall_sysctl(&mib[0], 2, &num_cpu, &num_cpu_len, nil, 0)
}
return int(num_cpu if num_cpu > 0 else 1)
}