Supposons que vous avez le code suivant dans une application web Play:Concurrency en jeu pour Scala
class MyClass extends Controller {
def myMethod = Action {
var a = 0
while (a < 1000) {
println("Value of a: " + a);
a = a + 1;
}
}
}
que je pourrais avoir une condition de course si deux utilisateurs/navigateurs invoquent la même méthode? Si oui, comment l'éviter?
Dans ce cas, la variable 'a' est locale à thread qui exécute le' Future' de 'Action', donc la réponse est ** non **. Si le 'a' a été déclaré comme * champ * du contrôleur alors, bien sûr, il aurait des conditions de concurrence. Une autre façon d'introduire des problèmes est de faire en sorte que '' Acteurs'/'Thread's /' Future's/'Acteurs' soit impliqué dans le changement de' a'. –
@ insan-e mais cela n'est applicable que si le contrôleur est un singleton. Si c'est créé par requête, il ne devrait pas y avoir de problèmes. –