int main(int argc, char **argv) { struct sigaction sa, osa; memset(&sa, 0, sizeof sa); sa.sa_handler = taskinfo; sa.sa_flags = SA_RESTART; sigaction(SIGQUIT, &sa, &osa); #ifdef SIGINFO sigaction(SIGINFO, &sa, &osa); #endif argv0 = argv[0]; taskargc = argc; taskargv = argv; if(mainstacksize == 0) mainstacksize = 256*1024; taskcreate(taskmainstart, nil, mainstacksize);//创建初始协程,调用应用层的taskmain函数,此时taskmainstart协程还没有运行,等待调度 taskscheduler();//进行协程调度 fprint(2, "taskscheduler returned in main!\n"); abort(); return 0; }
int main(int argc, char **argv) { struct sigaction sa, osa; memset(&sa, 0, sizeof sa); // 设置 quit 信号时,对应处理函数为 taskinfo // 这个函数会在收到退出信号时, 打印当前的所有协程信息 sa.sa_handler = taskinfo; sa.sa_flags = SA_RESTART; sigaction(SIGQUIT, &sa, &osa); #ifdef SIGINFO sigaction(SIGINFO, &sa, &osa); #endif argv0 = argv[0]; taskargc = argc; taskargv = argv; // 设置默认的最小栈大小 if(mainstacksize == 0) mainstacksize = 256*1024; // 创建一个主协程 taskcreate(taskmainstart, nil, mainstacksize); // 开始协程调度 taskscheduler(); fprint(2, "taskscheduler returned in main!\n"); abort(); return 0; }
int main(int argc, char **argv) { struct sigaction sa, osa; memset(&sa, 0, sizeof sa); sa.sa_handler = taskinfo; sa.sa_flags = SA_RESTART; sigaction(SIGQUIT, &sa, &osa); #ifdef SIGINFO sigaction(SIGINFO, &sa, &osa); #endif taskargc = argc; taskargv = argv; if (mainstacksize == 0) mainstacksize = 256 * 1024; taskcreate(taskmainstart, nil, mainstacksize); taskscheduler(); fprintf(stderr, "taskscheduler returned in main!\n"); abort(); return 0; }
int cornet_run() { void taskscheduler(); taskscheduler(); return 0; }