Неразрывные операции
От: MikelSV http://www.centerix.ru
Дата: 14.09.07 14:40
Оценка:
Подскажите, есть ли в ассемблере неразрывные команды умеющие например считать и записать значение. В общем так, что бы в это время не выполнялся другой код. Нужно для синхронизации.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re: Неразрывные операции
От: Сергей Мухин Россия  
Дата: 14.09.07 15:16
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Подскажите, есть ли в ассемблере неразрывные команды умеющие например считать и записать значение. В общем так, что бы в это время не выполнялся другой код. Нужно для синхронизации.


обычно есть. но хотелось бы знать процессор.
в intel, например lock xchg
---
С уважением,
Сергей Мухин
Re: Неразрывные операции
От: asmfan  
Дата: 17.09.07 18:02
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Подскажите, есть ли в ассемблере неразрывные команды умеющие например считать и записать значение. В общем так, что бы в это время не выполнялся другой код. Нужно для синхронизации.



xadd, xchg, cmpxchg, cmpxchg8b, cmpxchg16b

И как сказали префикс lock в сочетании с другими командами.
was here
Re: Неразрывные операции
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 03.10.07 19:15
Оценка:
Здравствуйте, 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", есть много хороших дискуссий вокруг синхронизации.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.