首先梳理一下整体的架构,总的来说就是一个生产—消费者的形式,建立在Executor framework上:
1.每一个Lane包含一个名字string和线程池(ExecutorService),线程池其实就相当于worker集合
2.每一个Lane有一个计数器(AtomicInteger),用来记录进入这个Lane的session的数量,session集合其实就相当于相当于任务队列
3.每一个GameRoom属于一个Lane(也就是一个Lane中可以有多个GameRoom)。每当添加一个新的session,就根据其所属的GameRoom放到相应的Lane中,这样同一个GameRoom中sessions就会在一个线程中进行处理(一个Lane其实就相是一个线程),有利于session间的交互。但是不同的GameRoom中的Session数量可能不同,导致处理器核心负载不均(一个线程是在一个处理器上执行的)。
时间: 2024-12-28 06:21:08