23. Game Client Room Lobby
Call ‘Enter Room’ RPC
Call ‘Authentication’ RPC ‘Authentication
‘Enter Room’
RPC ‘
RPC function
Function body
body Return ‘Authentication’ RPC
Return ‘Enter Room’ RPC
24. Game Client Room Lobby
Call ‘Enter Room’ RPC
Call ‘Authentication’ RPC
‘Enter Room’ ‘Authentication
RPC function RPC ‘
body Function body
Return ‘Authentication’ RPC
Return ‘Enter Room’ RPC
25. Game Client Room Lobby
Response Delay
Call ‘Enter Room’ RPC
Call ‘Authentication’ RPC
From Lobby Server
‘Enter Room’ ‘Authentication
RPC function RPC ‘
body Function body
Return ‘Authentication’ RPC
Return ‘Enter Room’ RPC
26. Game Client Room Lobby
Response Delay
Call ‘Enter Room’ RPC
Call ‘Authentication’ RPC
From Lobby Server
‘Enter Room’ ‘Authentication
RPC function RPC ‘
body Function body
Room Server
Return ‘Enter Room’ RPC
Return ‘Authentication’ RPC
throughput Decline
64. Before
Thread A Thread B
1A: Lock 1B: Lock
2A: Request 2B: Send Response
3A: Wait for Response 3B: Unlock
4A: Do something with Response
5A: Unlock
65. After
Thread A Thread B
1A: Lock 1B: Lock
2A: Create & Resume Coroutine 2B: Send Response
3A: Request 3B: Unlock
4A: Yield Non-Blocking
5A: Unlock
Thread A’
(invoked by response)
6A’: Lock
7A’: Resume
8A’: Do something
with response
9A’: Yield Break
10A’: Unlock
Sequential
Code
68. Before
Room Thread Lobby Service
1R: Call ‘Authentication’ RPC function 1L: Process the request
2R: Wait for the response 2L: Send back the response
3R: Process
69. After
Room Thread Lobby Service
1R: Create & Resume Coroutine 1L: Process the request
2R: Request 2L: Send back the response
3R: Yield Non-Blocking
Room Thread’
(invoked by response)
4R’: Resume
5R’: Process
6R’: Yield Break
Sequential
Code