Transaktion ist eine Folge von Anweisungen:
- als Ganzes (atomar) erfolgreich (commit) oder nicht
- bekannt von Implementierung von Datenbanken
- hier angewendet auf Speicherzugriffe
(software transactional memory)
- spekulative Ausführung: vor commit prüfen,
ob eine Variable gelesen wurde,
die inzwischen von anderer Transaktion geändert wurde
(ja → kein commit, retry)
- Transaktionen dürfen keine sichtbaren Nebenwirkungen haben
(Typ ist nicht
IO a
, sondern STM a
)
- retry: Transaktion abbbrechen, später neu starten
(wenn eine der Konfliktvariablen geschrieben wurde)
Johannes Waldmann
2010-01-25