友人と私は、2 つの AI が互いに戦うゲーム エンジンを作成しています。AI スレッドがゲームの速度を落としたり、任意のユニットを自由に破壊したりできないように、ゲーム エンジン スレッドを設定しようとしています。
私たちが抱えている問題は、ゲーム エンジンと AI の間でデータを共有する必要があることです。今までは を使用synchronize
していましたが、AI は変数をブロックするだけで、ゲーム エンジンはそれ以上先に進むことができません。または、AI が同期しないことを選択してゲームをクラッシュさせる可能性もありますが、これも私たちが望んでいることではありません。
Lock の実装を検討してきましたが、これは AI が変数を使用する前にロックされているかどうかを確認することを前提としているようです。
私たちがやりたいことは、データがロックされている場合の予測可能な時間を調べることです。ロックされている場合、AI は失格となります。それ以外の場合は、ゲームを続行します。同期の問題は、進行がデフォルトであり、変数がロック解除されるまでゲームエンジンが待機し、ハングする可能性があることです。
質問
変数がロックされているかどうかを確認してロックを強制できるように、変数/共有データをロックする方法は? または、ロックを伴わない解決策はありますか?