Convert Sharedsort's worker counters to atomic variables.

Currently, currentWorker and workersFinished are ints protected by
a spinlock.  By converting them to atomic variables, we can remove
the spinlock.  Note that the spinlock also covered the write of
each worker's tape metadata.  Removing it is still okay: each
worker writes only its own slot, and the atomic increment that
follows is a full barrier.  Furthermore, the leader doesn't read
the slot values until all workers have finished.

Reviewed-by: Zsolt Parragi <[email protected]>
Tested-by: solai v <[email protected]>
Discussion: https://postgr.es/m/alAJeRRzehDjLaF1%40nathan

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/ee97eef695e8be9153595131f8b63e4b1b3e8196

Modified Files
--------------
src/backend/utils/sort/tuplesort.c | 30 ++++++++----------------------
1 file changed, 8 insertions(+), 22 deletions(-)

Reply via email to