bool fiber::kill(void) { if (f_ == NULL) return false; acl_fiber_kill(f_); f_ = NULL; return true; }
bool fiber::kill(void) { if (f_ == NULL) return false; else if (acl_fiber_killed(f_)) return true; acl_fiber_kill(f_); return true; }
static void fiber_monitor(void) { int n; // 等待消息通知 __chan_monitor.pop(n); printf("--- kill fiber_accept ---\r\n"); // 杀死监听协程 acl_fiber_kill(__fiber_accept); printf("--- stop fiber schedule ---\r\n"); // 停止协程调度过程 acl_fiber_schedule_stop(); }
static void fiber_wait(ACL_FIBER *, void *ctx) { ACL_CHANNEL *chan = (ACL_CHANNEL *) ctx; unsigned long n = acl_channel_recvul(chan); printf("----fiber-%d: get n: %lu---\r\n", acl_fiber_self(), n); for (int i = 0; __workers[i] != NULL; i++) { printf("kill fiber-%d\r\n", acl_fiber_id(__workers[i])); acl_fiber_kill(__workers[i]); } printf("---- fiber schedul stopping now ----\r\n"); acl_fiber_schedule_stop(); }