оформление cas-loop, а именно, что делать в случае неудачи (ведь нет смысла пробовать кас еще раз сразу):
while (!cas()) {
// usleep(250); /// видел такое
// for i=0 i < n; i++ noop(); // и такое видел
}
Но выглядит это не убедительно
В случае кас в лок фри обычно до победного и пробуют
Это понятно. Лучший перф показывается, если до следующей попытки сколько-то подождать
Лучшая бест практис - не писать спинлок (по крайней мере, в юзерспейсе) Но если уж приспичило, то вот: https://arxiv.org/abs/1305.5800
Я не пишу спинлок
куда смотреть по этой ссылке? увидел
А в лок фри есть ещё какие то варианты?
Нет, поэтому и польза очень часто сомнительна (опять же, в юзерспейсе)
Это да, надо конечно это профилировать все
Для твоего кейса может быть лучше как с ожиданием так и без
Обсуждают сегодня