美文网首页
认识skynet(4)--原理

认识skynet(4)--原理

作者: 17269780ceda | 来源:发表于2017-03-16 22:09 被阅读329次

启动流程


启动流程

启动流程主要集中在两个文件中:

1是skynet-src/skynet_main.c这个是main()函数所在,主要就是设置一下lua的环境、默认的配置、打开config配置文件,并修改默认配置。最后调用skynet_start()函数,这个函数在skynet_start.c文件中。

2是skynet-src/skynet_start.c这个文件主要是初始化Skynet的各个模块,包括harbor节点、handle服务ID、mq消息队列、module加载动态链接库、timer时钟、socket套接字以及加载一些服务logger日志服务、master主服务、harbor节点服务、snlua加载lua模块的服务;以及最后启动几种线程包括_moitor、_timer、_socket和根据线程数启动n个工作线程。

这里需要注意的是Skynet将通过snlua服务加载第一个用户的服务:

snlua加载配置文件的start配置项

即:ctx = skynet_context_new("snlua", config->start);这行,意思就是使用snlua加载config->start这个服务。而config->start指向配置文件config的start = "main"这行。

调用服务


这个主要在C语言中实现,代码在skynet-src/skynet_server.c的skynet_context_new()函数中,这个函数主要就是实例化服务动态链接库中的”_create()”和”_init()”,以及给服务创建一个私有的消息队列。并填充到struct skynet_context结构中。这个结构很重要。

skynet_send(),发送消息到队列中,等待调用服务的回调函数。

相关文章

网友评论

      本文标题:认识skynet(4)--原理

      本文链接:https://www.haomeiwen.com/subject/xolsnttx.html