实习周记V

来源:互联网 发布:活塞坏孩子军团知乎 编辑:程序博客网 时间:2024/04/28 21:38

2014年12月29日 深圳

休息了一天,消息模拟器完成了一半多了。

早上老大重新布置了任务,需求从MFC改成cocos2d-x跨平台实现,对我的打击不小啊。算是对自己的磨练把,一周的时间也不能算是浪费,还有很多代码可用。

从头到尾看了边自己写的代码,沉余代码太多、耦合度较高、可复用性太低。这次打算开始敲代码前,要仔细想想代码结构。谁知道哪天需求又变了呢?

上午想了服务器线程和客户端线程大致结构,主要注意的就是降耦合、增加复用性。

服务器头文件如下:

class NetServerObject{public:// 连接目标地址bool Listen();// 收到消息包的回调virtual void onMessageReceived(FKCW_SimpleNet_Buffer& oBuffer) = 0;// 连接成功时的回调virtual void onConnected() = 0;// 连接失败时的回调virtual void onDisconnected() = 0;// 连接结束时的回调virtual void onConnectedEnded() = 0;public://初始化virtual bool init();// 设置监听IPvoid setListenHost(short host);// 发送消息包给目标//void send(char* pBuffer, unsigned int uLen);// 关闭当前连接void close();// 发送消息包给目标void Send(FKCW_SimpleNet_Buffer* pBuffer);// 断开当前连接void disconnect();};

NetServerObject是一个抽象类(Java叫法,C++里貌似没有这个词),该类需要继承后实现四个对外暴漏的接口,这样就大大降低了代码耦合度,增加了可复用性。

同时,NetServerObject内部封装了pthread,没实例化一个NetServerObject都会新创建一个新线程,使用时不用在频繁的Create线程了。


2014年12月30日 深圳

写好了NetServerObject类,还有一件很重要的事情需要完善,那就是释放NetServerObject。

delete NetServerObject时,程序直接Down掉,问题的原因应该是在网络保存连接时,突然delete掉内存,其子线程函数也会同样被释放,内存访问异常,所以导致程序跳出。

解决方式可以将线程函数声明为全局函数,这样释放NetServerObject时,子线程依然在工作,ok问题解决。


2014年12月31日 深圳

在2014年的最后一天,明天就元旦放假了,工作起来有点心烦。

老大今天给我放了半天假,下午用OpenGl做了些Shader

不被理解,只有忍耐。2015,你好。


0 0
原创粉丝点击