Szerencsere vannak atomi muveletek a modern processzorokon, mert ez a trukk nem minden processzoron mukodik. :)
Pelda: Az ARM processzorok atrendezhetik ezt a muveletet ugy, hogy valojaban ugyanazt a hibas erteket olvasod ki ketszer. Tehat ha akkor eppen a frissites felenel jarna a masik szal, akkor a hibas ertekrol hiszi azt a programod, hogy helyes. Ezzel a problemaval a legtobb programozo nem talalkozik, mert ha megfelelo szinkronizaciot hasznal akkor nem tortenik meg, hiszen a mutex muveletek tartalmaznak egy DMB utasitast, igy biztos, hogy a tobbi mag is tud a valtozasrol.
Meg egy aprosag: mi garantalja, hogy a masik szalnak van ideje befejezni a memoria muveletet a ket olvasas kozott ha az utemezo megszakitja a modositas kozepen?
Egyebkent nem olyan borzaszto dolog egy mutex. Persze, az ido lekerdezesehez tulzas lehet, de egyreszt vannak atomi muveletek, masreszt viszonylag ritkan kell a valodi ido a kernelnek. Az utasitasok szama is eleg felrevezeto. Valojaban fene tudja, hogy mi a teljes ara a muveleteknek.
Egy jol megtervezett mikrokernel eseteben amugy is kevesebb szinkronizaciora van szukseg, mert kevesebb idot tolt a processzor a kernelben. Egy nagy kernel mutex borzaszto dolog ha a kerneledben van egy halozati stack, usb stack, fajlrendszerek, es egyeb furcsasagok, de nem olyan nagy gond ha a kerneled valoban csak utemez, processzek kozott mozgat adatot, es a hw nagyon alacsony szintjet (megszakitasok, MMU, stb.) kezeli. A processzor lenyegesen kevesebb idot tolt a kernelben, igy a finomabb szinkronizacio elonyei is elvesznek.