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