Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Egy művelet akkor szerez be szemantikát , ha más processzorok mindig látni fogják annak hatását a későbbi műveletek hatása előtt. Egy művelet kiadási szemantikával rendelkezik , ha más processzorok az előző műveletek minden hatását látni fogják, mielőtt maga a művelet érvénybe lép.
Tekintse meg az alábbi példakódot:
a++;
b++;
c++;
Egy másik processzor szempontjából az előző műveletek bármilyen sorrendben megjelenhetnek. A másik processzor például láthatja a b növekményét a a növekménye előtt.
Az atomi műveletek, például az összekapcsoltXxx rutinok által végrehajtott műveletek alapértelmezés szerint beolvasják és felszabadítják a szemantikát. Az Itanium-alapú processzorok azonban gyorsabban hajtanak végre műveleteket, amelyek csak az "acquire" vagy csak a "release" szemantikával rendelkeznek, mint azokat, amelyek mindkettővel rendelkeznek. Ezért a rendszer biztosítja az InterlockedXxxAcquire és InterlockedXxxkiadási verzióit néhány InterlockedXxx rutinhoz.
Az InterlockedIncrementAcquire rutin például szemantikát használ a változók növekményéhez. Ha újraírja az előző kód példáját az alábbiak szerint:
InterlockedIncrementAcquire(&a);
b++;
c++;
A többi processzor mindig látná a a növekményét, mielőtt a b és c növekményeit.
Hasonlóképpen, az InterlockedIncrementRelease rutin a kiadási szemantikát használja a változó növelésére. Ha ismét átírja a példakódot, az alábbiak szerint:
a++;
b++;
InterlockedIncrementRelease(&c);
Más processzorok mindig a a és b növekményeket fogják látni a c növekmény előtt.
Ha a processzor nem ad meg olyan utasításokat, amelyek csak szemantikát szereznek be vagy csak oldanak fel, a rendszer a megfelelő rutint fogja használni, amely mindkét szemantikát biztosítja. Az x86-os processzorokon például az InterlockedIncrementAcquire és az InterlockedIncrementRelease egyenértékű az InterlockedIncrement-sel.
Az alábbi táblázat azokat a rutinokat sorolja fel, amelyek csak beolvasási és kiadási változatokkal rendelkeznek.
| Összekapcsoltxxx rutin | Beszerzés –Semantics-Only verzió | Kiadás:Semantics-Only verzió |
|---|---|---|