这个想法是为代理模拟环境。在最基本的情况下,它看起来喜欢这样的:建模异步游戏式环境
- 系统要求下一个动作
- 代理响应代理(如“左移”!)
- 系统移动代理到合适的状态
但是,我在执行异步方式(使用线程等)时遇到了问题。
目前我的系统是这样的:
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