傳送訊息有4種渠道
1. io
2. bus
3. stage
4. public
前面已經講過了關於easymanager的初始化。
public
class
easymanager
implements
private string scanpackage;
private mapresolvers = new hashmap<>();
public
void
init()
}} catch (exception e)
}} catch (classnotfoundexception e) }}
//執行的
public
void
execute(string command, message message)
}public easyresolver getresolver(string command)
public listgetcmdlist()
@override
public
void}}
## 先來講解下stage的訊息處理 ##
## balancebusines***ector的呼叫流程圖##
下面來重點看下balancebusines***ector
在使用分組執行器之前,會先建立乙個routeinfo(group,info) group只要為了尋找到分組執行器,而info主要是為了尋找到executor。
根據配置建立幾組分組執行器
mapgroups = new hashmap<>();
public
balancebusines***ector(long time, mapgroupconfigmap)
} public
void
execute(irunnable runnable, routeinfo routeinfo)
loadingcacheroutecachemap ;
executor executors;
public
executorpoolgroup(int size) );
}public
void
execute(string info, irunnable runnable)
private
final imsgqueuequeue;
private
executor(final string name)
public
void
execute(irunnable command)
總結: 初始化時: 先建立幾組分組執行器,在執行器中,再建立幾個執行器呼叫時:eg:傳送到場景中,先根據key(stage)來找出分組執行器。再根據stageid來從快取中找出相應的executor,然後將irunnable放入到佇列中. 這個就叫做負載均衡使用這個可以比較平均的找到每個executor。
private
final blockingqueuequeue = new linkedblockingqueue<>();
//加入到佇列中
public
boolean
add(irunnable e)
// 啟動
public
void
start(final string name) }};
t.start();
}
private disruptordisruptor;
private ringbufferringbuffer;
private runnableeventhandler runnableeventhandler = new runnableeventhandler();
private executorservice executor = executors.newcachedthreadpool(new gamethreadfactory(name));
private
final
int buffer_size = util.ceilingnextpoweroftwo(1024*64);
@override
public
boolean
add(final irunnable e)
//放到指標上,並且發布
long next = ringbuffer.next();
tryfinally
return
true;
}//直接呼叫
private
void
execute(irunnable e)
});}
public
void
start(string name)
遊戲訊息處理
事件機制在很多高階程式語言中都有支援。譬如vb c delegate c builder 並不屬於c 的範疇。c builder中的事件處理器必須用關鍵字closure 閉包 修飾 等等,甚至在html中也可以見到它的身影。事件機制的引入使軟體系統變得更加易於理解 它使一種語言 平台 更加接近於這個...
第七章 Windows 遊戲輸入訊息處理
虛擬鍵碼與鍵盤訊息 在windows中,所有鍵盤的按鍵都被定義為一組通用的 虛擬鍵碼 也就是說在windows系統下所有按鍵都會被視為虛擬鍵 包括滑鼠鍵在內 而每乙個虛擬鍵都有其對應的乙個虛擬鍵碼。windows系統是乙個訊息驅動的環境,一旦我們在鍵盤上進行輸入操作,那麼系統便會接收其對應的鍵盤訊息...
訊息和訊息處理之訊息迴圈
在win32程式設計中,訊息迴圈是相當重要的乙個概念,看似很難,但使用起來卻是非常簡單。在winmain函式的最後,有下列 while getmessage msg,null,0,0 windows應用程式可以接收以各種形式輸入的資訊,這包括鍵盤 滑鼠動作 計時器產生的訊息,也可以是其他應用程式發來...