Você está usando
LOCK IN SHARE MODE que bloqueia a linha de UPDATE ou DELETE operações, mas permite que a linha seja lida. Consulte esta documentação
para mais informações. Um resumo da documentação está abaixo. Sua consulta retorna a mesma linha para todos os processos/trabalhadores e eles simplesmente esperam a liberação do bloqueio anterior antes de colocar seu próprio bloqueio na linha. Para realizar o tipo de bloqueio que você precisa, substitua seu
SELECT ... LOCK IN SHARE MODE com SELECT ... FOR UPDATE .