C# Class GameFramework.UserProcessScheduler

玩家数据处理调度器,玩家数据请求将被放到并行的若干个线程里进行处理。 有2类线程: 1、由GetUserThread().QueueAction或DefaultUserThread.QueueAction调用发起的操作,此时执行线程无法指定。 2、调度器内部实例化一个线程,用以进行必须在一个线程里进行的操作。(未对外提供接口,目前假定用于为1中操作需要有序的服务。)
这个类采用多线程操作数据,每个UserInfo在进游戏后到离线期间,相应操作都在一个线程处理,但由于全局线程与内部线程也会用到用户数据,仍然要考虑多线程问题。 请注意几条约定: 1、UserInfo一旦实例化,内存不会被释放(只回收到池子里供重用,RoomInfo也是这样)。 2、对于只操作小于等于机器字长的数据的函数,不加锁(操作本来就是原子的)。 3、在全局线程操作用户数据时,需要将操作排队到用户线程处理后再返回全局线程处理(会麻烦一些,但这样能避免加锁)。 4、UserInfo中的集合数据在读写时要考虑所有访问这些数据的地方的并发情况,需要加锁的加锁。
显示文件 Open project: dreamanlan/CSharpGameFramework

Private Properties

Property Type Description
ActivateUserGuid void
AddKickedAccount void
AddWaitRecycleUser void
AllocUserThread void
CreateRole void
CreateRoleEnterResultMsg GameFrameworkMessage.RoleEnterResult
DSPLoadAccountCallback void
DSPLoadUserCallback void
DispatchJsonMessage void
DoAccountLogin void
DoAccountLoginWithoutQueueing void
DoChangeName void
DoLastSaveUserData void
DoRequestNickname void
DoRoleEnter void
DoUserHeartbeat void
DoUserLogin void
DoUserLogoff void
DoUserLogoff void
DoUserRelogin void
FindUserGuidByFuzzyNickname List
FindUserGuidByNickname ulong
FreeKey void
FreeUserThread void
GenerateKey uint
GetAccountInfoById AccountInfo
GetGuidByNickname ulong
GetUserCount int
GetUserInfo UserInfo
GetUserThread UserThread
GetUserThread UserThread
HandleBroadcast void
InitNicknameData void
InitUserinfo void
IsMpveScene bool
IsPveScene bool
IsPvpScene bool
NewUserInfo UserInfo
OnAccountLogout void
OnTick void
RecycleUserInfo void
RemoveKickedAccount void
Start void
Stop void
UserProcessScheduler System
VisitUsers void

Private Methods

Method Description
ActivateUserGuid ( ulong guid ) : void
AddKickedAccount ( string accountId, long ms ) : void
AddWaitRecycleUser ( ulong guid ) : void
AllocUserThread ( UserInfo userInfo ) : void
CreateRole ( string accountId, string nickname, int heroId ) : void
CreateRoleEnterResultMsg ( UserInfo ui ) : RoleEnterResult
DSPLoadAccountCallback ( string accountId, Msg_DL_LoadResult ret ) : void
DSPLoadUserCallback ( Msg_DL_LoadResult ret, string accountId, string nickname ) : void
DispatchJsonMessage ( bool isGmTool, uint seq, int sourceHandle, int destHandle, byte data ) : void
DoAccountLogin ( string accountId, string password, string clientInfo, string nodeName ) : void
DoAccountLoginWithoutQueueing ( string accountId, string password, string clientInfo, string nodeName ) : void
DoChangeName ( ulong guid, string nickname ) : void
DoLastSaveUserData ( ) : void
DoRequestNickname ( string accountId ) : void
DoRoleEnter ( string accountId, string nickname ) : void
DoUserHeartbeat ( ulong guid ) : void
DoUserLogin ( UserInfo user ) : void
DoUserLogoff ( ulong guid ) : void
DoUserLogoff ( ulong guid, bool forceLogoff ) : void
DoUserRelogin ( UserInfo user ) : void
FindUserGuidByFuzzyNickname ( string fuzzyName ) : List
FindUserGuidByNickname ( string nickname ) : ulong
FreeKey ( uint key ) : void
FreeUserThread ( UserInfo userInfo ) : void
GenerateKey ( ) : uint
GetAccountInfoById ( string accountId ) : AccountInfo
GetGuidByNickname ( string nickname ) : ulong
GetUserCount ( ) : int
GetUserInfo ( ulong guid ) : UserInfo
GetUserThread ( UserInfo user ) : UserThread
GetUserThread ( ulong guid ) : UserThread
HandleBroadcast ( BroadcastType type, string content, int roll_ct ) : void
InitNicknameData ( List nicknameList ) : void
InitUserinfo ( UserInfo ui ) : void
IsMpveScene ( int sceneId ) : bool
IsPveScene ( int sceneId ) : bool
IsPvpScene ( int sceneId ) : bool
NewUserInfo ( ) : UserInfo
OnAccountLogout ( string accountId ) : void
OnTick ( ) : void
RecycleUserInfo ( UserInfo info ) : void
RemoveKickedAccount ( string accountId ) : void
Start ( ) : void
Stop ( ) : void
UserProcessScheduler ( ) : System
VisitUsers ( MyAction visitor ) : void