文章仅仅是用来记录学习的过程。。。
skynet启动部分:
1、SIGHUP信号处理;
2、skynet进程是否需要以守护进程形式存在;
3、skynet_harbor_init:harbor环境初始化;
4、skynet_handle_init:全局的handle_storage分配内存,并初始化;
5、skynet_mq_init:global_queue全局消息队列分配内存,并初始化;
6、skynet_module_init(config->module_path):全局modules分配内存并初始化,主要用来存在cpath路径下的modules;
7、skynet_timer_init:全局定时器timer创建,并初始化;
8、skynet_socket_init:全局 socket_server创建并初始化;
9、skynet_context_new(config->logservice, config->logger):logerservice服务上下文创建,并导出service_logger.c的接口函数;
10、bootstrap(ctx, config->bootstrap):以bootstrap作为参数,启动snlua服务,启动服务方式以skynet_context_new方式启动;
11、start(config->thread):启动核心线程,核心线程包括:thread_monitor 、thread_timer、thread_socket、thread_worker;
12、skynet_harbor_exit():harbor环境信息清除;
13、skynet_socket_free():socket_server清除;
14、daemon_exit:守护进程退出;
注意点:从skynet启动流程可以看出有很多全局对象,全局模块handle、全局消息队列global_queue、全局modules(主要是初初始化modules下面的模块接口)、全局定时器timer。