结构:
有若干个服务,每个服务有一个消息队列queue和一个回调函数cb。所有服务的消息队列连成一个全局的链表G
1、多线程
monitor线程:监控每个服务,查看是否有消息超过5秒的处理时间,如果有报警。
worker线程:
若干个工作线程,工作流程:从G中取出一个消息队列q,处理q中的若干个消息(处理的数量为:消息长度 》优先级),每个消息使用cb进行处理,将q放回G中。
注意:每个服务同时只会被一个线程进行处理,但每次不确定是哪个工作线程,所以根线程有关的函数需要注意,如random。
skynet开源棋牌服务器
https://github.com/yuanfengyun/chess_server
客户端unity2d
https://github.com/yuanfengyun/chess