Hola gente!

Ayer, el bueno de Valloud menciono transacciones, imagino transacciones de
objetos. Menciono tambien GemStone. Antes de preguntar sobre GemStone,
quisiera preguntar algo sobre Smalltalk en general.

Que consideran como transacciones de objetos, aca, en Smalltalk? En lo que
viene abajo, no hablo de distribuido, simplemente transacciones en una VM
digamos local.

Me imagino:

aRect := Rectangle new.

En algun momento

aRect width: 100.

En un proceso P1, se arma una transaccion T1 (no se si esto existe en lo que
llaman por aca transacciones).

Un poco mas adelante, en un proceso P2, se arma una transaccion T2.

Durante T1, la evaluacion de:

aRect width

devuelve 100. Lo mismo en T2.

En algun momento, T1 hace

aRect witdh: 200

con lo que se cambia algun estado interno, supongamos una variable de
instancia width. Todavia no hace T1 commit.

Luego de ese instante, en T2 se evalua

aRect width

y sigue dando 100 (aca asumo que T2 siempre ve una especie de snapshot de lo
que tenian los objetos al comienzo de la vida de T2, y por supuesto, ve los
cambios que hace T2, pero no los de otras Tn).

T1 hace commit. T2 sigue funcionando.

Aparece en algun proceso P3, una transaccion T3, nacida luego de T1 commit.
En esa T3, el evaluar

aRect width

devuelve 200, de acuerdo a los valores YA committeados por T1. Mientras
tanteo, en T2 sigue siendo

aRect width

valiendo 100, segun lo que habia al comienzo de T2.

Que pasa cuando T2 hace:

aRect width: 300

? Da error ahi? Da error mas adelante, cuando hace commit y se ve que algun
cambio de estado esta en conflicto con lo que ya committeo T1? Gana
simplemente T2?

Es esto que describo arriba, lo que llaman por aca transacciones de objetos?

Existe esto en algun Smalltalk? (recuerden, estoy considerando NO objetos
distribuidos, sino cambios en la memoria de una simple VM local).

Bueno, esas son mis preguntas, cualquier info, bienvenida y se agradece!

Algo implemente en [1], y queria pasar a implementar algo similar en [2], mi
pet project. La idea seria tener algo como Software Transactional Memory
(mis enlaces http://delicious.com/ajlopez/stm)

Nos leemos!

[1]
http://ajlopez.wordpress.com/2010/06/07/memory-transactions-in-ajsharp-using-references/
[2] http://code.google.com/p/ajtalk/

Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a