Size: a a a

2021 March 11

DF

Dollar Føølish in pro.cxx
Andrey Glebov
всё верно - на x64 есть cmpxchg16b например
Теперь понял, спасибо
источник

AG

Andrey Glebov in pro.cxx
Dmitry Ulyumdzhiev
Спасибо
да, похоже что просто заменить оба указателя будет недостаточно. но имея такую возможность, думаю можно построить lock-free вариант (сам не пробовал)
источник

CD

Constantine Drozdov in pro.cxx
Andrey Glebov
да, похоже что просто заменить оба указателя будет недостаточно. но имея такую возможность, думаю можно построить lock-free вариант (сам не пробовал)
> нужно атомарно провести операцию над p и *p
источник

DF

Dollar Føølish in pro.cxx
А где тут *Р
источник

CD

Constantine Drozdov in pro.cxx
в счётчике ссылок
источник

DF

Dollar Føølish in pro.cxx
Хмм
источник

DF

Dollar Føølish in pro.cxx
Понятно тогда и правда не поможет
источник

DF

Dollar Føølish in pro.cxx
Andrey Glebov
всё верно - на x64 есть cmpxchg16b например
Оно на непрерывное слово действует или на два отдельных полслова ?
источник

AG

Andrey Glebov in pro.cxx
на один непрерывный 128-битный блок по идее
источник

DF

Dollar Føølish in pro.cxx
Тогда тут аргумент Константина
источник

DF

Dollar Føølish in pro.cxx
Р и *р не рядом же лежат
источник

DF

Dollar Føølish in pro.cxx
А нормальных мультиворд cas нигде нету
источник

AF

Aidar Fattakhov in pro.cxx
Dollar Føølish
Ведь вроде достаточно атомика в контрол блоке ?
Сам поинтер
источник

DF

Dollar Føølish in pro.cxx
Уже объяснили )(
источник

CD

Constantine Drozdov in pro.cxx
Andrey Glebov
да, похоже что просто заменить оба указателя будет недостаточно. но имея такую возможность, думаю можно построить lock-free вариант (сам не пробовал)
вообще забавно, что построить lock-free можно, но для этого нужно на время транзакции запретить аллокатору переиспользовать память
источник

AG

Andrey Glebov in pro.cxx
Dollar Føølish
Р и *р не рядом же лежат
ага, но если не ошибаюсь, я где-то читал, что lock-free замена shared_ptr с dcas реализуема
источник

AG

Andrey Glebov in pro.cxx
может быть это можно сделать, только если изменить то, как работает shared_ptr внутри
источник

AG

Andrey Glebov in pro.cxx
ошибся кстати с названием DCAS
cmpxchg16b это DWCAS (double-wide CAS)
источник

DF

Dollar Føølish in pro.cxx
Dcas по моему имеет два адреса и четыре ордеринга
источник

DF

Dollar Føølish in pro.cxx
Dwcas имеет один адрес и два ордеринга
источник