Wat is transactioneel geheugen?

In software is het schema van transactioneel geheugen een handelwijze voor multithreaded programmering die transacties 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 thread -toegangsorder. Gewoonlijk is één bestelling gewenst en bij multithreading zijn sloten de overheersende en eenvoudigste manier om ervoor te zorgen dat slechts een enkele thread tegelijk toegang heeft tot een specifieke bron.

Deze benadering van transactioneel geheugen bevat meerdere problemen met betrekking tot sloten in multithreading. Een slot kan permanent worden als er een soort onverwachte fout optreedt en sloten kunnen onvoorspelbare problemen teweegbrengen met gelijktijdigheid, zoals deadlock of prioriteitsinversie. Als gevolg van het feit dat sloten zeer fijnkorrelig zijn, omvat een ander probleem dat de code uiteindelijk het grootste deel van de tijd doorbrengt tussen vergrendeling, contextschakelen en UNLocking. Dit is een cruciaal probleem omdat het kan leiden tot meer tijd die de code besteden aan deze acties dan bij het doen van ander, belangrijk werk in het programma. Daarentegen kunnen grofkorrelige sloten verminderde verwerkingsprestaties en verminderde gelijktijdigheid veroorzaken.

De problemen in het transactiegeheugen worden aangepakt door geavanceerde sloten, waaronder "Lock Block" van C#, lees-schrijven sloten, schrijfbarrières, enz. Een van de belangrijkste prioriteiten met betrekking tot het transactie-geheugen is om geen sloten te hebben en geen onnodige vergrendelingstijd. Meestal wordt het ermee eens dat een gegevensstructuur die wordt gedeeld vrij is van sloten als wederzijdse uitsluiting niet vereist is door de bewerkingen. Gegevensstructuren die worden gedeeld en vrij van sloten voorkomen dat veelgebonden problemen met standaard vergrendelingstechnieken voorkomen als ze in systemen zijn die zeer gelijktijdig zijn.

Het transactionele geheugencoherentie en consistentie (TCC) -model is een nieuw,Voorgesteld model over gedeeld geheugen. Volgens het model zijn atomaire transacties altijd basiseenheden van het volgende: parallel werk, geheugencoherentie, communicatie en consistentie van geheugenreferentie. Het TCC -model maakt parallelle software ook eenvoudiger door synchronisatie te elimineren die normensloten of semaforen gebruikt. Door middel van hardware combineert TCC ook elk schrijven uit elke regio van transactie -optreden in één pakket om het pakket atomair uit te zenden naar een geheugenstatus die permanent wordt gedeeld. Naast vereenvoudigde coherentiehardware, betekent dit dat er een vermindering van berichten met een lage bestemming nodig is en een volledige eliminatie van bepaalde, standaard coherentieprotocollen.

ANDERE TALEN