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]
-~----------~----~----~----~------~----~------~--~---

Répondre à