diff options
author | Noah Misch <noah@leadboat.com> | 2019-10-18 20:21:10 -0700 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2019-10-18 20:21:10 -0700 |
commit | 48cc59ed24f95fa171b12ba1b461e6dc72d62b2b (patch) | |
tree | 7061b25d3bfe6d765c6cdff019503cb08b75d826 /src | |
parent | 30ee5d17c20dbb282a9952b3048d6ad52d56c371 (diff) | |
download | postgresql-48cc59ed24f95fa171b12ba1b461e6dc72d62b2b.tar.gz postgresql-48cc59ed24f95fa171b12ba1b461e6dc72d62b2b.zip |
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/20191015035348.GA4166224@rfd.leadboat.com
Diffstat (limited to 'src')
-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, |