Mon, 12 May 1997 04:55:24 -0400 (EDT)
MD> I mean, in the extreme case, before pushSTACK(obj) actually pushes `obj', it
MD> calls a startTransaction. The push occurs, and then a
MD> endTransaction occurs. Clearly the cost of actually performing
MD> these transactions all the time is very high.
MD> But why can't `startTransaction' be defined like:
MD> startTransaction ()
MD> and `endTransaction' by:
MD> if (transactionCount > transactionThreshold)
MD> transactionCount = 0;
Sure you can do that, but then what's the point? A transaction becomes
kinda meaningless as we can't assume that any given action has transacted.
We lose our measure of atomicity and imho that's the point of a
transactional bd. If you look at the solution I'm proposing its not
hugely different from your example up there, except that its a more genearl
case, and doesn't try to call page flushes transactions, it reserves that
for world-global synhronization.