我和一個朋友正在製作一個遊戲引擎,其中兩個AI正在互相攻擊。我們嘗試設置遊戲引擎線程,使得AI線程無法做任何事情,例如減慢遊戲速度或隨意破壞任何單位等。共享數據並強制線程間鎖定
我們遇到的問題是我們需要共享遊戲引擎和AI之間的數據。到目前爲止,我們使用了synchronize
,但AI可以阻止變量,遊戲引擎不能再繼續。或者AI可以選擇不同步並使遊戲崩潰,這也不是我們想要的。
我們一直在研究Lock的實現,但是這似乎假設AI會在使用前檢查變量是否被鎖定,這是一個不好的AI當然無法做到的事情。
如果我們的數據被鎖定,我們想要做的就是查看可預測的時間。如果它被鎖定,我們將取消AI的資格。否則,我們繼續遊戲。同步的問題在於進程是默認的,並且遊戲引擎將等待,直到變量被解鎖並且可能掛起。
問題
如何鎖定在這樣一種方式,你可以看到,如果變量被鎖定,並強制鎖定變量/股的數據?或者有沒有解決方案不涉及鎖定?
請參閱[java.util.concurrent.atomic](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/package-summary.html),它可能會提供足夠的功能滿足您的要求。 – hmjd
看看http://www.cs。utah.edu/flux/janos/janosvm.html。我不知道該項目是否是最新的,但我認爲你可能會覺得它很有用。 –
_哇,謝謝大家的所有答案,我們正在研究他們._ – Tommos