F init(t:Thread, f:Fun, arg) { thread_attr = c_pthread_attr_t() c_pthread_attr_init(thread_attr) create_result = c_pthread_create(thread_attr, f, arg) code = create_result[0] if code { throw Error("Failed to c_pthread_create") } t.thread = create_result[1] }