Je suis en train d'écrire un cadre AI-testing pour un concours. Les participants soumettent une classe de Bot qui correspond à une interface donnée. Ensuite, tous les robots jouent un tour par tour. À chaque virage, je veux faire ce qui suit:Limitation des cycles du processeur d'exécution de threads en Java
For every bot B:
start a thread that runs at most N cycles and does B.getNextMove()
wait for all threads to complete
Make all moves (from each bot).
Ma difficulté vient de dire «au plus N cycles». Je peux limiter tous les bots par le temps (disons une demi-seconde par tour) mais cela signifie que certains peuvent avoir plus de cycles de processeur que d'autres et ne permettent pas un strict "votre bot devrait être capable de prendre sa décision". X temps "exigence dans la compétition.
Comme indiqué, ceci est en Java. Des idées? J'ai regardé la concurrence et le verrouillage, mais cela ne semble pas être la bonne direction. En outre, il est possible de ne pas exécuter les bots dans Parralel et ensuite utiliser le temps pour la restriction (étant donné que l'ordinateur ne fonctionne pas à ce moment), mais ce serait indésirable car cela ralentirait considérablement la vitesse à laquelle nous pourrait avoir des résultats à partir des jeux.
Que signifie "cycle" en Java? Comment le définiriez-vous? – skaffman
Personnellement, je l'ai interprété comme "cycles de processeur" comme il le dit plus tard ... et il n'y a aucun moyen de limiter un thread à des nombres spécifiques de cycles de processeur que j'ai jamais trouvé. – PSpeed