Mikä on tapahtumamuisti?

Ohjelmistossa tapahtumamuistin malli on toimintatapa monisäikeiselle ohjelmoinnille, joka käyttää tapahtumia, jotka ovat samankaltaisia ​​kuin tietokannan käyttämät tapahtumat. Kun kaksi tai useampia säikeitä yrittää käyttää samoja tietoja samanaikaisesti, monet erilaiset ei -toivotut tilanteet voivat johtaa tilanteisiin, joissa ohjelman tulos riippuu säikeiden käyttöjärjestyksestä. Yleensä halutaan yksi tilaus ja monisäikeisessä käytössä lukot ovat vallitseva ja yksinkertaisin tapa varmistaa, että vain yhdellä säikeellä on pääsy tiettyyn resurssiin kerrallaan.

Tämä lähestymistapa tapahtumamuistiin sisältää useita ongelmia monisäikeisen lukituksen suhteen. Lukko voi muuttua pysyväksi, jos tapahtuu odottamaton virhe, ja lukot voivat aiheuttaa arvaamattomia ongelmia samanaikaisesti, kuten umpikuja tai ensisijainen käänteisyys. Koska lukot ovat erittäin hienojakoisia, toinen ongelma sisältää koodin, joka lopulta viettää suurimman osan ajasta lukituksen, kontekstin vaihtamisen ja lukituksen avaamisen välillä. Tämä on ratkaiseva ongelma, koska se voi johtaa siihen, että koodi käyttää enemmän aikaa näihin toimiin kuin muun tärkeän työn tekemiseen ohjelmassa. Sitä vastoin karkeat rakeet voivat heikentää käsittelytehoa ja heikentää rinnakkaisuutta.

Tapahtumamuistiin liittyvät ongelmat ratkaistaan ​​edistyneillä lukkoilla, mukaan lukien “lukituslohko” C#: lta, luku-kirjoituslukot, kirjoitusesteet jne. Yksi tapahtumamuistin tärkeimmistä prioriteeteista on, ettei lukkoja ole eikä tarpeetonta lukon käsittelyaikaa. . Yleensä sovitaan, että jaettu tietorakenne on lukitsematon, jos sen toiminta ei edellytä keskinäistä poissulkemista. Jaetut ja lukitsemattomat tietorakenteet välttävät tavallisiin lukitustekniikoihin liittyviä yleisiä ongelmia, jos ne ovat erittäin samanaikaisissa järjestelmissä.

Transactional Memory Coherence and Consistence (TCC) -malli on uusi ehdotettu jaetun muistin malli. Mallin mukaan atomitapahtumat ovat poikkeuksetta seuraavien perusyksiköitä: rinnakkaistyö, muistin johdonmukaisuus, viestintä ja muistiviittauksen johdonmukaisuus. TCC -malli tekee myös rinnakkaisohjelmistosta yksinkertaisemman poistamalla synkronoinnin, joka käyttää standardilukkoja tai semaforia. Laitteiston kautta TCC yhdistää myös jokaisen tapahtuman jokaiselta alueelta tulevan kirjoituksen yhteen pakettiin, jotta paketti voidaan lähettää atomisesti muistitilaan, joka jaetaan pysyvästi. Yksinkertaistetun koherenssilaitteiston lisäksi tämä tarkoittaa, että tarvittavia vähäisen lepotilan viestejä vähennetään ja tietyt vakiomuotoiset koherenssiprotokollat ​​poistetaan kokonaan.