silly 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
silly 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
silly 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 C/C++ Lua 查看源码 »
操作系统 Linux
软件类型 开源软件
开源组织
地区 国产
投 递 者 findstr
适用人群 未知
收录时间 2017-06-02

软件简介

silly 是一个以 Lua 语言开发为主的高并发服务器框架,也是一个轻量的、极简的服务器程序框架。

silly 底层采用 C 和 Lua 语言混合开发,而上层业务逻辑开发则以 Lua 语言开发为主。

silly 工作于传统的单进程单线程模型。主要解决 socket 连接管理及异步调用带来的麻烦(callback hell)。socket 连接管理主要采用 C 代码编写,Lua coroutine 则被用来避免异步调用带来的麻烦。

silly内部有3个线程协同工作,之所以依然说他是单进程单线程工作模型是因为这3个线程之间不共享任何变量,与3个独立的进程没有任何区别。这三个线程分别管理worker, socket, timer.

worker线程工作在lua虚拟机之上,主要负责处理socket/timer产生的事件,因此所有的逻辑代码都是通过worker线程执行的。worker模块在接收到事件后会立即将其转换到lua层,然后再调用逻辑代码进行处理。

socket线程在epoll/kevent上的基础上做了一层薄薄的封装,主要用于高效的将socket数据、关闭、连接等事件发送到worker线程进行处理。默认socket最大只能管理65535个连接,可以通过silly_socket.c文件中的宏MAX_SOCKET_COUNT来控制最大socket连接数的限制。另外,socket对epoll/kevent进行了封装,由socket_poll.h统一管理。只要符合socket_poll.h对接口的定义,可以轻松为silly换成任何需要的socket IO模型。

timer线程是一个高分辨率低精度定时器,其默认分辨率为10ms,可以通过修改silly_timer.c中的宏RESOLUTION来控制timer中的分辨率,但是最低不得低于1ms.

silly提了一部分特性的测试代码,运行./silly test/test会自动运行所有模块的测试。这些代码都极其简单并且都可以独立运行, 简单修改一个启动配置文件即可单独运行。

因此运行一下测试代码应该是一个不错的开始。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
12 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部