Изменения

Перейти к: навигация, поиск

Стек Трайбера

114 байт добавлено, 10:44, 1 октября 2018
Lock-freedom алгоритмы и CAS
'''Сравнение с обменом''' (англ. ''compare and set, compare and swap, CAS'') — атомарная инструкция, сравнивающая значение в памяти с одним из аргументов, и в случае успеха записывающая второй аргумент в память.
}}
Ниже представлен псевдокод операции <tex>CAS</tex>для целочисленных переменных'''fun ''' cas('''int*''' p, '''int''' old, '''int''' new): '''bool {''' '''if ''' *p != old { '''return ''' '''false }''' *p = new '''return ''' '''true''' }
<tex>CAS</tex> используется для реализации таких примитивов синхронизации, как ''mutex'' и ''semaphore''. Это своеобразный базовый "кирпичик" для ''Lock-freedom'' алгоритмов, ведь если <tex>CAS</tex> привел к неудачи, то кто-то другой изменил старое значение. Таким образом, прогресс в системе есть. <tex>CAS</tex> реализован на уровне атомарных переменных во многих языках программирование, в том числе Java и C.
Анонимный участник

Навигация