08 2016 档案

摘要:actor在skynet中称为模块,每个模块由皮囊和骨骼组成。皮囊承载用户逻辑,骨骼承载内部框架逻辑。 皮囊(skynet_module) 皮囊在框架中用skynet_module对象表示,实现在skynet-src/skynet_module.c中,代表一个动态库.下文用sm来称呼. 先来看看sm 阅读全文
posted @ 2016-08-25 00:20 watercold 阅读(1770) 评论(0) 推荐(0)
摘要:skynet是云风基于actor模型实现的一个服务器框架,核心七千多行c代码,并提供了一个lua binding。写得比较简明,用起来比较爽快,很合我的胃口,再加之决定在公司最近的一个项目上skynet,所以就决定精读一遍源码,将所思所想所得记录于此,以便用起来心安理得。 skynet的实现基于如下 阅读全文
posted @ 2016-08-22 22:58 watercold 阅读(1220) 评论(0) 推荐(0)
摘要:之前用的ubuntu,要么是装好的,要么是虚拟机里的,今天在公司亲自给一台新机器装了个ubuntu-server 16.04,在网络配置上遇到了问题,果然实践出真知啊。 事情是这样的,装好系统后,我的网络配置是这样的: /etc/network/interfaces auto eth0 iface 阅读全文
posted @ 2016-08-19 22:10 watercold 阅读(10938) 评论(0) 推荐(0)
摘要:在处理网络分包,包未收完整时,必定需要一个缓冲区来缓存数据,ring_buffer是最常用的选择。它是一个比较简单的数据结构,在学《数据结构》时想必大家都实现过,但我前几天就被它教育了一把,write时,一处分支漏了个等号,些许情况下会缓冲区溢出,导致堆栈一些数据被破坏,让我足足花了一整天才找到这个 阅读全文
posted @ 2016-08-15 23:51 watercold 阅读(657) 评论(0) 推荐(0)
摘要:项目中的计时器模块是用libuv做的,今天发现了点问题,是释放uv_timer_t引起了,我是在uv_timer_start的回调里释放该结构的,这里是不能释放了,因为回调完后,库还会使用uv_timer_t里的数据,之前没出问题,是恰好这个内存还没有被使用,其数据还没被破坏。正确的释放时机,是再调 阅读全文
posted @ 2016-08-04 23:44 watercold 阅读(1704) 评论(0) 推荐(0)
摘要:ubuntu 14.04对很多分辨率不支持,如1920x1080。一百度,都是用xrandr来添加切换分辨率,但是这些更改都是临时的,一重新登录就都失效了,如何让其永久存在了,我们只需让用户一登陆就设置一遍就好了。只需在~/.profile的末尾加上: xrandr --newmode [cvt的输 阅读全文
posted @ 2016-08-02 21:51 watercold 阅读(520) 评论(0) 推荐(0)
摘要:linux下使用lua一般用静态库,它依赖了两个库:-lm -ldl,必须记得链上,否则编译不过 阅读全文
posted @ 2016-08-02 21:26 watercold 阅读(495) 评论(0) 推荐(0)
摘要:使用c99链接libuv时会遇到如下编译错误: 1、UV_BARRIER_STRUCT_PADDING undeclared here(not in function). 2、unknown type name 'pthread_rwlock_t' 只需在编译指令加上-D_XOPEN_SOURCE= 阅读全文
posted @ 2016-08-02 21:22 watercold 阅读(1133) 评论(0) 推荐(0)