bool ponyint_sched_start(bool library) { pony_register_thread(); if(!ponyint_asio_start()) return false; atomic_store_explicit(&detect_quiescence, !library, memory_order_relaxed); DTRACE0(RT_START); uint32_t start = 0; for(uint32_t i = start; i < scheduler_count; i++) { if(!ponyint_thread_create(&scheduler[i].tid, run_thread, scheduler[i].cpu, &scheduler[i])) return false; } if(!library) { ponyint_sched_shutdown(); } return true; }
bool ponyint_asio_start() { if(!ponyint_thread_create(&running_base.tid, ponyint_asio_backend_dispatch, asio_cpu, running_base.backend)) return false; return true; }