A linearizálhatóság ( angolul linearizability ) a többszálú programozásban a program olyan tulajdonsága, amelyben az eljárások (műveletek) párhuzamos végrehajtásának eredménye egyenértékű valamilyen szekvenciális végrehajtással. Minden más szál esetében a linearizálható művelet végrehajtása azonnali: a művelet vagy nem indult el, vagy nem fejeződött be.
Mint látható [1] , a linearizálhatóság lokális és nem blokkoló tulajdonság. A lokalitás azt jelenti, hogy ha a műveletek linearizálhatósága több programra külön-külön (vagy egy program különböző objektumokkal dolgozó műveleteire) igazolódik, akkor a programok együtt (műveletek együtt) is linearizálhatók lesznek. Linearizálható programban az elindított műveletek befejezéséhez nem szükséges más műveletek elindítása. Ez a nem blokkoló tulajdonság. Ezenkívül a linearizálhatóság megkönnyíti a linearizálható műveleteket használó programok tulajdonságainak bizonyítását, mivel a linearizálható program viselkedése szekvenciális végrehajtásokra redukálódik.
A linearizálhatóság tulajdonsága sok tekintetben hasonló az olyan tulajdonságokhoz , mint a szerializálhatóság , az atomitás és a szekvenciális konzisztencia . Ezzel szemben a linearizálhatóság egy specifikáció jelenlétét jelenti, míg ezek a tulajdonságok csak magára a programra vonatkoznak. Egyes forrásokban az atomitás kifejezést a linearizálható szinonimájaként használják, míg másokban az önlinearizálhatót jelenti .
Gyakran a szálbiztonság informális fogalma ( eng. thread-safety ) pontosan linearizálhatóságként értendő.
A linearizálhatóság fogalma először Herlihy és Wing [2] 1987 -es cikkében jelent meg konzisztencia modellként osztott memóriájú objektumszervezéssel rendelkező rendszerek számára . Az összes többi rendszertől eltérően itt a programok közvetlenül nem használhatnak megosztott változókat, csak speciális függvény-módszereken (műveleteken) keresztül. Ezeknél a rendszereknél a linearizálhatóság egybeesik a szigorú konzisztenciával .
A linearizálhatósági teszt probléma a funkcionális tesztelési probléma speciális esete , amelyben azt vizsgálják, hogy a program megfelel-e a specifikáció formájában megadott funkcionális követelményeknek. De az általános esettől eltérően itt a specifikáció csak a szekvenciális végrehajtásokhoz szükséges.