Tesztelés és beállítás

A Test-and-set  egy egyszerű, törésmentes ( atomi ) processzor utasítás, amely egy változó értékét egy regiszterbe másolja, és új értéket állít be. Ezen utasítás végrehajtása közben a processzor nem szakíthatja meg annak végrehajtását és nem válthat át egy másik szál végrehajtására. Ha többprocesszoros architektúrát használunk, akkor miközben az egyik processzor végrehajtja ezt az utasítást egy memóriahelyen, a többi processzor nem fér hozzá ehhez a helyhez, ami a memóriabusz reteszelésével érhető el.

Példa:

enter_critical_section: TSL REGISTER, LOCK // A LOCK változó értéke bemásolódik a regiszterbe // és állítsa 1-re. CMP REGISTER, #0 // A régi érték nullához viszonyítva. JNE enter_critical_section // Ha nem nulla, akkor valaki már belépett a kritikus szakaszba és zárolta. RET // A zárolás sikerült, visszatérés a hívó funkcióhoz.

Ebben az esetben a cella feloldása a szokásos MOV eljárással történik:

left_critical_section: MOV LOCK, #0 // Oldja fel a változót. RET // Visszatérés a hívó funkcióhoz.

Lásd még