Sunday, March 22, 2009

Ch8, Ex10

The reason that sum is locking all the cells is that its calculating the whole sum in one big transaction and in the growing phase of this transaction it locks all the cells and keep them all locked unless whole sum is calculated. So, the strategy is to simply break the calculation of full sum into partial sums. Here is the code..
declare Sum S={NewCellT 0}
fun {Sum}
{Trans proc {$ T _} {T.assign S 0} end _ _}
for J in 0..80;20 do
{Trans
proc {$ T _}
for I in J+1..J+20 do
{T.assign S {T.access S}+{T.access D.I}} end
end _ _}
end
{Trans fun {$ T} {T.access S} end _}
end

No comments:

Post a Comment