Пример #1
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

	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;
}
Пример #2
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;
}
Пример #3
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;
}
Пример #4
0
int cornet_run() {
    void taskscheduler();
    taskscheduler();

    return 0;
}