ref: d8bd5599e0e4b7919e3987ad80cb39f4a8aff63d
dir: /lib/thread/spawn+osx.myr/
use sys use std pkg thread = type tid = uint64 const spawn : (fn : (-> void) -> std.result(tid, byte[:])) ;; const Stacksz = 8*std.MiB extern const exit : (-> void) const spawn = {fn -> spawnstk(fn, Stacksz) } const spawnstk = {fn, sz var tid : tid, ret ret = sys.bsdthread_create( \ startthread castto(void#), \ &fn castto(void#), \ sz castto(void#), \ &tid castto(void#), \ 0) if ret == -1 castto(void#) -> `std.Fail "couldn't spawn thread" ;; -> `std.Ok tid castto(tid) } const startthread = {fn : (-> void)# -> void fn#() std.write(1, "...bye mom\n") sys.bsdthread_terminate(0 castto(void#), 0, 0, 0) }