2022年4月9日记:Linux服务器开发,Mark,skynet重要组件以及手撕游戏项目

────────────────────────────────────

┌————————————┐
│▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈雁杳天涯路,始信人间别离苦。
└————————————┘
对你的感情正在充电中,请稍侯…

────────────────────────────────────
推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]
https://ke.qq.com/course/417774?flowToken=1042807

────────────────────────────────────

skynet重要组件以及手撕游戏项目

  • 前言
  • 消息与事件关系?
  • 消息与actor如何绑定?具体的绑定接口流程是什么?
  • 消息与协程的关系
  • 同学展示才艺阶段
  • 栈空间
  • 虚表指针
  • 总结

前言

写博客是一个很好的学习习惯,不管今天真的有没有学到知识,坐在电脑前絮絮叨叨记录写下今天所学的知识,哪怕一丁点生活感悟,心情也会变得非常开心。
好的,开始今天的学习。
本节课的主要目标就是掌握框架的开发思路。

消息与事件关系?

2022年4月9日记:Linux服务器开发,Mark,skynet重要组件以及手撕游戏项目_第1张图片

typedef union epoll_data
{
	void * ptr;  		//skynet使用的方式
	int fd;  			//redis使用的方式
	uint32_t u32;
	uint64_t u46;
}epoll_data_t;

指向一个socket关联对象,id是标记着socket的标识。

sp_add,sp_del,sp_enable是对epoll_ctl事件控制的封装。

学到这里我似乎长大了,认识到了计算机世界的奇妙,曾经的年少无知都仿佛发生在刚刚。

消息与actor如何绑定?具体的绑定接口流程是什么?

感觉就像是一堆缜密的结构体用指针指来指去,却从未指出回家的方向。

线程与线程通信,不加锁有没有更好的方式?
管道你值得拥有!少量数据,不要一次发太多的数据。

当事件触发,做相对应的IO操作,把处理的事件包装成消息推送到相对应的actor消息队列。

消息与协程的关系

确定读事件时候,先把数据读出来。问题是如何把事件转为消息?
读事件被触发,从网络事件中读取数据包装成消息,然后推到消息队列当中去。

同学展示才艺阶段

在reactor网络编程中,对于客户端来说什么表示网络建立成功?

  • connect非阻塞
  • fd可写
    但是对于服务器来说,又是怎么样的?
  • listenfd交由epoll进行管理
  • fd可读

这个问题当时只有 @麻利小超人 回答正确了,得到了Mark老师的青睐,估计他内心一定回很骄傲。但是从内容本质上来看这并不是一道很难的问题,我也同样能回答出来,只是当时已经在摸鱼ING了。

  • yield 主动让出协程
  • resume 唤醒协程
    我们的lua协程是通过手动的方式,和King老师讲的不一样,没有借助任何中间件,走的的是自强的道路。

条件满足进行唤醒,条件不满足就要让出。

栈空间

2022年4月9日记:Linux服务器开发,Mark,skynet重要组件以及手撕游戏项目_第2张图片

虚表指针

2022年4月9日记:Linux服务器开发,Mark,skynet重要组件以及手撕游戏项目_第3张图片

总结

通过今天的学习mark老师的skynet组件,并且真正的参与到了游戏环节,感觉真正的学习到了skynet。直播时,没有回答出老师提的问题有些遗憾,心有不甘,但是现在感觉也能铺着胸脯说掌握了三分了。
学了2遍也只能掌握到现在这个程度了,好了,废话就不多说了。
不管经历什么。努力成为最好的自己。

你可能感兴趣的:(c++,linux,c++,linux)