Подскажите, есть ли в ассемблере неразрывные команды умеющие например считать и записать значение. В общем так, что бы в это время не выполнялся другой код. Нужно для синхронизации.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Здравствуйте, MikelSV, Вы писали:
MSV>Подскажите, есть ли в ассемблере неразрывные команды умеющие например считать и записать значение. В общем так, что бы в это время не выполнялся другой код. Нужно для синхронизации.
xadd, xchg, cmpxchg, cmpxchg8b, cmpxchg16b
И как сказали префикс lock в сочетании с другими командами.
Здравствуйте, MikelSV, Вы писали:
MSV>Подскажите, есть ли в ассемблере неразрывные команды умеющие например считать и записать значение. В общем так, что бы в это время не выполнялся другой код. Нужно для синхронизации.
Про x86 (32, 64 — неважно) рассказали.
Sparc использует тот же метод (команды CASA, CASXA, CAS значит compare and swap).
Подходы других платформ (PPC, Alpha, ARM, MIPS) хорошо описаны тут:
http://en.wikipedia.org/wiki/LL/SC
По ссылкам там далее много интересного. И рекомендую поискать по данному форуму по словам "lock-free" и "wait-free", есть много хороших дискуссий вокруг синхронизации.