Re[2]: Software transactional memory
От: palm mute  
Дата: 10.01.07 20:25
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Проблемы в этом подходе будут при работе с циклическими графами

C>объектов. Для чистых функциональных языков это не важно — там невозможно
C>создать цикл (все переменные иммутабельны), но вот для императивного
C>стиля — все плохо.
Циклический граф на чистом функциональном ленивом языке создать элементарно:
-- cyclic list
oneTwoThrees = 1:2:3:oneTwoThrees

-- cyclic graph
data Graph a = Node a [Graph a]

x = Node "x" [y,z]
y = Node "y" [x,z]
z = Node "z" [x,y]


Теперь онтопик: какие проблемы с циклическими графами в транзакциях? Транзакция, насколько я понимаю, связана с атомарным обновлением нескольких значений с сохранением некоторого инварианта. Если граф конечный, то узлов/ребер также конечное число. Какое значение тут имеют циклы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.