пишет что +++-++, то есть что какой-то кондишн не покрыт?
Но я не понимаю какой и почему "+/-" шесть, а не 4 учитывая что в ифе возможны только 4 логические комбинации
auto expected = State::HasWait;
if (_state.load(std::memory_order_acquire) == expected &&
_state.compare_exchange_strong(expected, State::Empty, std::memory_order_acq_rel)) {
_callback.Reset(NoRefTag{}, nullptr);
return true;
}
return false;
Хм мб это из cas чтото лезет?
А если cas убрать, насколько уменьшится кол-во?
Обсуждают сегодня