|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Nechayev 2:5020/400 04 Feb 2004 22:10:11 To : Dmitry Miloserdov Subject : Re: синхронизация. -------------------------------------------------------------------------------- >>> Dmitry Miloserdov wrote: VN>>>> atomic_compare_and_set(a,b,c) действует так: если *a==c, то *a=b VN>>>> (присвоить) и вернуть 1, иначе вернуть 0. Внутри неё по сути одна VN>>>> команда CMPXCHG (для x86). SO>>> А откуда она берется? VN>> Кто? DM> atomic_compare_and_set откуда берется? гугл о ней впервые слышит. Hу это было общее имя. DM> atomic_cmpset_int наверное которой в -stable нету. Можно и эту (если sizeof(Elem*) == sizeof(int)) DM> А кстати там какая-то интересная замена этой функции для отсутствия DM> cmpxchg* основанная на cli. Она что действительно может работать? DM> Фря останавливает все процессоры по этой команде?! или как? DM> там даже шина не лочится. Дело в том, что код верхнего уровня хочется писать единообразно, в то же время хочется запускать и на i386, а код предназначен только для ядра. Поэтому для >=486 - честный CMPXCHG, а для i386 (для которого SMP не поддерживается, тем более что его делали только в шутку) - вот такая вот замена, которая действительно помогает от вмешательства обработчиков прерываний. -netch- --- ifmail v.2.15dev5.3 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/7368e06afb34.html, оценка из 5, голосов 10
|