diff --git a/drama/src/rev-mc.c b/drama/src/rev-mc.c index da21620..cdc1873 100644 --- a/drama/src/rev-mc.c +++ b/drama/src/rev-mc.c @@ -370,10 +370,10 @@ find_row_mask(std::vector &sets, } } - for (int i = 0; i < step && cur_mask < last_mask; ++i) { - if (!found.load(std::memory_order_relaxed) && resolve(cur_mask)) { - std::lock_guard _(lock); + for (int i = 0; i < step && cur_mask < last_mask && !found.load(std::memory_order_relaxed); ++i) { + if (resolve(cur_mask)) { if (!found.exchange(true)) { + std::lock_guard _(lock); row_mask = cur_mask; break; }