這個想法是爲代理模擬環境。在最基本的情況下,它看起來喜歡這樣的:建模異步遊戲式環境
- 系統要求下一個動作
- 代理響應代理(如「左移」!)
- 系統移動代理到合適的狀態
但是,我在執行異步方式(使用線程等)時遇到了問題。
目前我的系統是這樣的:
void Start(){
while(true && !gameOver){
askAgent()
moveAgent()
if(agentState == terminalState){
gameOver = True;
}
}
}
顯然,這阻止該線程,這是上運行。 (更令人尷尬的是我使用OSGi,所以任何一個包都不應該佔用所有的處理時間!)
另外,我希望系統對出現在環境中的新代理做出反應,並與他們聯繫(我運行時,OSGi中,已經通知我的工廠,如果事情出現或從系統中消失)是這樣的:
void setAgent(Agent agent){
system.addAgentToEnvironment(agent);
system.simulateAgent(agent);
}
而不是從主只是運行直了......
我知道這是非常混亂,我不知道我是否甚至提出正確的問題 - 所以任何提示o ñ我可以看看的架構或方法非常感謝。
不會「等待事件」看起來阻止當前線程我在...? – drozzy
這個想法是你有一個主線程和工作線程。我發佈的代碼僅適用於主線程,它幾乎沒有任何工作。所以,是的,等待事件會阻止,但直到你得到一個事件,然後一個孩子在它上面工作。 – dbeer