Skynet
日月光辉_
这个作者很懒,什么都没留下…
展开
-
Skynet:timer线程
Skynet:timer线程 timer数据结构:skynet_timer.c 创建timer线程:create_thread(&pid[1], _timer, m) 线程函数:更新skynet时钟,2.5毫秒更新一次 更新逻辑:skynet_timer.c 更新时间,计算diff的差值,更新current_point,调用timer_update执行真正的timer处理 timer_execute触发定时器,向对应的服务发送消息,完成定时器的逻辑,定时器精确到10毫秒原创 2020-11-05 22:10:36 · 390 阅读 · 0 评论 -
Skynet:worker线程
Skynet:worker线程 创建worker线程:skynet_start.c 每个工作线程配置不同的权重,即每次从服务消息队列中取的消息数量不同,可以减少全局消息队列上锁的频率,提高服务器的并发,同时能防止某些服务饥饿 工作函数:不断调用skynet_context_message_dispatch函数进行派发消息 消息派发机制:skynet_server.c 从全局消息队列取一个服务的消息队列,根据工作线程的权重大小处理相应数量的消息。根据消息队列的handle获取服务的上下文,通过dipa原创 2020-11-05 21:20:11 · 300 阅读 · 0 评论 -
Skynet:socket线程
Skynet:socket线程 socket应用层t数据结构 socket服务层数据结构 控制命令请求包结构 创建线程:create_thread(&pid[2], _socket, m); 工作函数:_socket 不断调用skynet_socket_poll函数,处理socket消息,进入socket服务循环 调用socket_server_poll取相关消息,根据返回类型进行派发消息,发送到对应服务的消息队列里面,forward_message逻辑如下,其中sky原创 2020-11-05 16:49:09 · 334 阅读 · 0 评论 -
Skynet: monitor线程
skynet: monitor线程 数据结构:kynet_monitor.c 创建线程: create_thread(&pid[0], _monitor, m); 工作流程:skynet_start.c moniter 线程每5秒检测每个工作线程是否能及时处理消息 版本更新:skynet_server.c 工作线程在派发消息前会触发监视器,使版本号加1;工作线程处理完消息后会再次触发监视器,重置distination为0 版本检测:skynet_monitor.c 如原创 2020-11-05 16:18:55 · 326 阅读 · 1 评论