Wat is transactiegeheugen?
In software is het schema van transactiegeheugen een manier van handelen voor multithreaded programmeren waarbij transacties worden gebruikt die veel lijken op die van een database. Wanneer twee of meer threads tegelijkertijd proberen toegang te krijgen tot dezelfde gegevens, kunnen veel verschillende ongewenste situaties resulteren in gevallen waarin de uitkomst van een programma afhangt van de threadvolgorde. Gewoonlijk is één bestelling gewenst en bij multithreading zijn sloten de belangrijkste en eenvoudigste manier om ervoor te zorgen dat slechts één thread tegelijkertijd toegang heeft tot een specifieke resource.
Deze benadering van transactiegeheugen bevat meerdere problemen met betrekking tot vergrendelingen in multithreading. Een vergrendeling kan permanent worden als een soort onverwachte fout optreedt en vergrendelingen kunnen onvoorspelbare problemen met gelijktijdigheid veroorzaken, zoals een impasse of prioriteitsinversie. Als gevolg van vergrendelingen die zeer gedetailleerd zijn, omvat een ander probleem de code die uiteindelijk het grootste deel van de tijd doorbrengt tussen vergrendeling, contextomschakeling en ontgrendeling. Dit is een cruciaal probleem omdat het ertoe kan leiden dat de code meer tijd aan deze acties besteedt dan aan ander, belangrijk werk in het programma. Grofkorrelige sloten kunnen daarentegen verminderde verwerkingsprestaties en verminderde gelijktijdigheid veroorzaken.
De problemen in het transactionele geheugen worden aangepakt door geavanceerde sloten, waaronder "slotblokkering" van C #, lees-schrijfvergrendelingen, schrijfbelemmeringen, enz. Een van de belangrijkste prioriteiten met betrekking tot transactiegeheugen is om geen sloten te hebben en geen onnodige slotverwerkingstijd . Er wordt meestal afgesproken dat een datastructuur die wordt gedeeld vrij is van vergrendeling als wederzijdse uitsluiting niet vereist is voor haar activiteiten. Datastructuren die worden gedeeld en vrij van vergrendelingen voorkomen vaak voorkomende problemen met standaard vergrendelingstechnieken als ze zich in systemen bevinden die sterk gelijktijdig zijn.
Het Transactional Memory Coherence and Consistency (TCC) -model is een nieuw, voorgesteld model voor gedeeld geheugen. Volgens het model zijn atomaire transacties steevast de basiseenheden van het volgende: parallel werk, geheugencoherentie, communicatie en consistentie van geheugenreferentie. Het TCC-model maakt ook parallelle software eenvoudiger door synchronisatie met standaardvergrendelingen of semaforen te elimineren. Via hardware combineert TCC ook elke schrijfactie uit elk transactiegebied in één pakket om het pakket atomair uit te zenden naar een geheugentoestand die permanent wordt gedeeld. Naast vereenvoudigde coherentiehardware betekent dit dat er minder berichten nodig zijn met een lage sluimertijd en een volledige eliminatie van bepaalde standaard coherentieprotocollen.