Disons, dans ce cas-là c'est un peu toi qui assure l'atomicité en vérifiant que le compte y est et que tu ne décrémente que si le nouvel objet est validé. Si tu ne faisais pas ça, le lock ne serait pas suffisant.
Michel Belleville 2009/2/5 Guillaume Betous <[email protected]> > Je peux toujours essayer, ne serait-ce que pour l'exercice. > > Mais cela dit, je me suis trompé. En y réfléchissant bien, si j'ai la non > concurrence, j'ai pas besoin de l'atomicité. > > Et au passage j'ajouterais que il me semble que "atomicité" est ici > impropre : l'atomicité garantissant normalement la non-concurrence (en tous > cas dans le cadre des instructions processeur), puisque dans opération > atomique on parle de operation non interruptible. > > gUI > > Le 5 février 2009 07:26, Michel Belleville <[email protected]> a > écrit : > >> En fait, à ta place je ferais les deux approches à la fois. Le blocage de >> l'objet t'assure la non-concurrence des requêtes (le script est le seul à >> passer à la fois), et la transaction t'assure l'atomicité (tout passe à la >> fois ou rien ne passe du tout). >> Michel Belleville >> >> >> 2009/2/4 Tony Chauveau <[email protected]> >> >> >>> >>> > >>> > Je sais, c'est pour ça que je m'en inquiète, mais la transaction Rails >>> > sert >>> > à ça non ? >>> > >>> >>> C'est pas exactement le même problème. La transaction permet d'enchainer >>> plusieurs requêtes en annulant tout si l'une d'entre elles échoue. >>> Le lock interdit l'accès en écriture à une table (ou juste une ligne de >>> cette table) tant qu'on a pas rendu la main. >>> -- >>> Posted via http://www.ruby-forum.com/. >>> >>> >>> >> >> >> > > > -- > Pour la santé de votre ordinateur, préférez les logiciels libres. > Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/ > Browser le web : http://www.mozilla-europe.org/fr/products/firefox/ > Suite bureautique : http://fr.openoffice.org/ > > > > --~--~---------~--~----~------------~-------~--~----~ Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected] -~----------~----~----~----~------~----~------~--~---
