Does this mean that pessimistic detection can only be used with eager versioning, and optimistic detection with lazy versioning?
@c0d3r, See Slide 52
I'm having trouble figuring out when I would use pessimistic vs. optimistic in different situations/architectures.
Example: It seems fairly clear that optimistic conflict detection is better for low-contention systems. But what if there's high contention? Pessimistic detection has the benefit of being quick to abort, but optimistic detection guarantees progress and involves less communication. Which is preferable?
(I guess another question that should be asked before this is whether or not transactional memory should even be used for high-contention systems.)
@thomasts In high contention case, pessimistic detection is preferable because it performs fined granularity detection and can undo less work. The issue of progress forward can be resolved by using random back-off schemes.
So above where it says "pessimistic aka eager" and "optimistic aka lazy" actually has no relation to eager/lazy versioning?
I'm wondering what a critical path means here...