diff options
author | Noah Misch | 2019-10-19 03:21:10 +0000 |
---|---|---|
committer | Noah Misch | 2019-10-19 03:21:10 +0000 |
commit | 48cc59ed24f95fa171b12ba1b461e6dc72d62b2b (patch) | |
tree | 7061b25d3bfe6d765c6cdff019503cb08b75d826 | |
parent | 30ee5d17c20dbb282a9952b3048d6ad52d56c371 (diff) |
Use standard compare_exchange loop style in ProcArrayGroupClearXid().
Besides style, this might improve performance in the contended case.
Reviewed by Amit Kapila.
Discussion: https://postgr.es/m/[email protected]
-rw-r--r-- | src/backend/storage/ipc/procarray.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 8abcfdf841f..3da53074b18 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -493,9 +493,9 @@ ProcArrayGroupClearXid(PGPROC *proc, TransactionId latestXid) /* Add ourselves to the list of processes needing a group XID clear. */ proc->procArrayGroupMember = true; proc->procArrayGroupMemberXid = latestXid; + nextidx = pg_atomic_read_u32(&procglobal->procArrayGroupFirst); while (true) { - nextidx = pg_atomic_read_u32(&procglobal->procArrayGroupFirst); pg_atomic_write_u32(&proc->procArrayGroupNext, nextidx); if (pg_atomic_compare_exchange_u32(&procglobal->procArrayGroupFirst, |