游戏服务器多线程设计问题
1. 方案一
将n个玩家分组,然后每组对应的消息映射到固定的线程去处理。即一个worker线程->task1,task2,task3....即单线程串行执行。
2.方案二
task1,task2,task3...直接submit到worker线程组里面执行,然后加异步通知完成。
对于方案1:会由于每个线程的任务多少以及复杂度不一样,可能有的会忙死,有的比较闲,不能够均摊计算量。但是优势就是单线程编程简单一些。
对于方案2:对于多个task均要操作对某个玩家的数据更新的时候,肯定是需要加锁。如果加锁顺序不恰当容易造成死锁。
所以请问你们是怎么设计服务器端的多线程设计方案的。对于上面的方案有什么改进或者更好的设计方案,希望各路大神不吝赐教