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(-)
