Sokolov Yura <funny.fal...@postgrespro.ru> 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;
 }
 #endif

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 (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to