多线程游戏服务器实现(go)
简介
基于开源大厅游戏框架pitaya,重写消息的Dispatch逻辑,使其成为可控go线程
go线程之间通过事务管道,发送函数到对应携程执行,实现多线程下的无锁协作
开源仓库地址:https://gitee.com/Eetal/gogame
结构
memdbctrl为模拟多线程协作下的并发数据库事务如何进行安全处置
schedctrl为管理定时任务驱动线程的mgr,定时驱动线程router.sched可以多线程执行
servicectrl为管理用户连接的逻辑线程的mgr,逻辑线程router.service可以多线程执行
示例代码默认开启25个router.service,1个router.sched
核心代码
- 通用事务结构体
- 通用事务可控协程
基于goid绑定goroutine信息
- 事务安全转发逻辑
信号量与资源机制,信号量绑定当前占据线程
资源绑定等待线程数
演示
更多文章,请搜索公众号歪歪梯Club