Files
c3c/lib/std/os/cpu.c3
Pierre Curto f4ad9fcee0 move num_cpu() to std::os (#928)
* lib/std: move num_cpu() to std::os

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

* add ThreadPool (#926)

* lib/std/collections: fix tab indentation

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

* lib/std/threads: add ThreadPool

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

* ats/lib/threads: add num_cpu()

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

---------

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

* lib/std/os: move macos constants to std::os::macos

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>

---------

Signed-off-by: Pierre Curto <pierre.curto@gmail.com>
2023-08-14 17:04:06 +02:00

34 lines
633 B
C

// https://www.cprogramming.com/snippets/source-code/find-the-number-of-cpu-cores-for-windows-mac-or-linux
module std::os @if(env::DARWIN);
import std::os::macos;
fn uint num_cpu()
{
int[2] nm;
usz len = 4;
uint count;
nm = { macos::CTL_HW, macos::HW_NCPU };
macos::sysctl(&nm, 2, &count, &len, null, 0);
if (count < 1) count = 1;
return count;
}
module std::os @if(env::LINUX);
import std::os::posix;
fn uint num_cpu()
{
return posix::get_nprocs_conf();
}
module std::os @if(env::WIN32);
import std::os::win32;
fn uint num_cpu()
{
SystemInfo info;
win32::get_system_info(&info);
return info.dwNumberOfProcessors;
}