Sokolov Yura <> writes:
@@ -382,12 +358,8 @@ static inline uint64
 pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 and_)
        uint64 old;
-       while (true)
-       {
-               old = pg_atomic_read_u64_impl(ptr);
-               if (pg_atomic_compare_exchange_u64_impl(ptr, &old, old & and_))
-                       break;
-       }
+       old = pg_atomic_read_u64_impl(ptr);
+       while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old & and_));
        return old;

FWIW, I do not think that writing the loops like that is good style.
It looks like a typo and will confuse readers.  You could perhaps
write the same code with better formatting, eg

        while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old & and_))
                /* skip */ ;

but why not leave the formulation with while(true) and a break alone?

(I take no position on whether moving the read of "old" outside the
loop is a valid optimization.)

                        regards, tom lane

Sent via pgsql-hackers mailing list (
To make changes to your subscription:

Reply via email to