惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 叶小钗
小众软件
小众软件
博客园 - Franky
D
Docker
Google DeepMind News
Google DeepMind News
Microsoft Azure Blog
Microsoft Azure Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
宝玉的分享
宝玉的分享
C
Check Point Blog
B
Blog
V
V2EX
博客园 - 三生石上(FineUI控件)
MyScale Blog
MyScale Blog
The Cloudflare Blog
博客园 - 聂微东
博客园_首页
Engineering at Meta
Engineering at Meta

博客园 - 健忘猪

lua中得栈 Linux多线程编程(不限Linux)【转】 tolua++实现分析 cocos2dx的lua绑定 cocos2d ios 环境搭建 导出 C/C++ API 给 Lua 使用[转] C++中实现回调机制的几种方式[转] 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab threading COM技术内幕(笔记) UI库阶段性进展(button在文本对齐的基础上增加文本偏移让文本位置更精准) UI库阶段性进展(完成textrender的文字align) UI库阶段性进展(完成文字列表,样式列表(样式列表可继承)) UI库阶段性进展(按钮初具雏形) 关于一个GetLevelDesc函数 的认知问题 UI库阶段性进展(把背景图元设定为Wnd基类的成员) UI库阶段性进展(增强图元功能) UI库阶段性进展(增加从xml中某一结点初始化窗口功能) UI库阶段性进展
Skynet Pomelo Erlang Elixir 的认识
健忘猪 · 2015-05-11 · via 博客园 - 健忘猪

1.skynet pomelo(node.js) elixir(erlang) 周末研究总结 手游这两年发展来看,感觉对实时性要求越来越高,有同事在研究Elixir开发,google得知这东西是基于erlang搞出来的,语法类似ruby; 公司现在客户端采用全cocos2d + c++ + lua,新项目unity3d + c# + lua, lua在产品开发中使用比较频繁,同事了解程度也比较深; 完美情况下自然最好是服务端也使用lua开发,之前就经常发生在服务端ruby代码中写lua的囧像。 周末花了两天时间做了下研究,关于高性能服务器架构的知识;无非就是高性能io处理,多进程多线程模型,透明化分布式,脚本热更新 etc 这些东西; 关于io处理 epoll和windows的iocp,对比select模型,效率对比就是轮询一堆端口:o(n)跟直接注册回调:o(1)的差别; pomelo: 内部使用websocket或者socket.io的实现,内部也是使用epoll实现 skynet: 同样使用epoll/kqueue实现,代码在socket_epoll.c socket_kqueue.c erlang:同skynet 据说erlang 处理1百万个空tcp链接很轻松,这块几个研究对象区别不是特别大; 关于进程线程 pomelo:单进程单线程模型,具体原因是node.js的实现就是这样的; skynet: 多进程多线程模型; erlang: 单进程多线程模型; pomelo进程之间通信是通过socket完成(包括同机),每个进程中都有一个消息循环,rpc都是异步完成,可见效率一般; skynet是单进程内预制n个线程,每个服务有自己的消息循环,没消息的时候挂起,有消息的时候,选择一个线程来跑服务,消息队列的消息投 递使用原子锁;处于同进程内的服务间,消息通信效率还是比较高的,消息可以拷贝也可以不拷贝,建议拷贝; erlang封装了自己的进程概念,实际上类似skynet(其实是skynet借鉴了erlang vm),每个进程对应的是操作系统线程, 综上,erlang的设计很好,所以skynet也借鉴了设计,但是介于lua开发的方便性,个人更倾向于skynet; 关于透明化cluster: 这点做的最好的是erlang,因为它在语言层面上就不需要关心物理机器,进程这些东西;skynet在这方面跟pomelo差不多,还是需要关心物 理机; 关于热更新 erlang和skynet都是可以实现热更新,pomelo新版本中能实现某些逻辑关系不复杂的模块热更新; 其他:lua的coroutine的方便之处,在异步的操作过程中,一般做法就是调用-》回调-》调用-》回调…,这种嵌套的调用代码书写很麻烦,使用协程可以方便的在一个函数内实现异步调用,挂起等待结果回调的同步效果;