JSFiber::scope::scope(JSFiber *fb) : m_hr(0), m_pFiber(fb) { fiber_init(); if (fb == NULL) m_pFiber = new JSFiber(); exlib::Fiber::tlsPut(g_tlsCurrent, m_pFiber); Isolate::now().m_fibers.putTail(m_pFiber); }
int main() { plan(7); memory_init(); fiber_init(fiber_c_invoke); struct fiber *f = fiber_new("main", main_f); fiber_wakeup(f); ev_run(loop(), 0); fiber_free(); memory_free(); return check_plan(); }
int main(void) { const char *addr = "0.0.0.0:8089"; ACL_VSTREAM *sstream = acl_vstream_listen(addr, 128); fiber_init(); if (sstream == NULL) { printf("acl_vstream_listen error %s\r\n", acl_last_serror()); return 1; } acl_non_blocking(ACL_VSTREAM_SOCK(sstream), ACL_NON_BLOCKING); printf("%s: call fiber_creater\r\n", __FUNCTION__); fiber_create(fiber_accept, sstream, 32768); printf("call fiber_schedule\r\n"); fiber_schedule(); return 0; }
VALUE rb_fiber_new(VALUE (*func)(ANYARGS), VALUE obj) { return fiber_init(fiber_alloc(rb_cFiber), rb_proc_new(func, obj)); }
static VALUE rb_fiber_init(VALUE fibval) { return fiber_init(fibval, rb_block_proc()); }
JSFiber *JSFiber::current() { fiber_init(); return (JSFiber *)exlib::Fiber::tlsGet(g_tlsCurrent); }