module Std::Task { extern func bux_task_init(num_workers: int); extern func bux_task_spawn(fn: *void, arg: *void) -> *void; extern func bux_task_join(handle: *void); extern func bux_task_sleep(ms: int64); extern func bux_task_yield(); extern func bux_task_current_id() -> int; extern func bux_task_shutdown(); struct TaskHandle { handle: *void; } func Task_Init(num_workers: int) { bux_task_init(num_workers); } func Task_Spawn(fn: *void, arg: *void) -> TaskHandle { return TaskHandle { handle: bux_task_spawn(fn, arg) }; } func Task_Wait(t: TaskHandle) { bux_task_join(t.handle); } func Task_Sleep(ms: int64) { bux_task_sleep(ms); } func Task_Yield() { bux_task_yield(); } func Task_CurrentId() -> int { return bux_task_current_id(); } func Task_Shutdown() { bux_task_shutdown(); } }