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]
}