Evite a fome usando rebanho com 2 processos com bloqueio de gravação e leitura

Evite a fome usando rebanho com 2 processos com bloqueio de gravação e leitura

Eu tenho dois scripts, vamos chamá-los de script1 e script2.

O script1 é agendado a cada 2 minutos e leva 4 minutos para ser executado. O script2 é agendado a cada 30 minutos e leva 4 minutos para ser executado. No momento estou usando o rebanho nos scripts para garantir que o script1 e o script2 nunca sejam executados simultaneamente. No entanto, a exclusividade do bloqueio de gravação faz com que o script1 também nunca seja executado simultaneamente.

No meu caso, gostaria de permitir o paralelismo do script1 e a não simultaneidade com o script2. Se eu usar o bloqueio de leitura entre as instâncias do script1, o problema é que causarei uma fome no script2 e ele nunca será executado.

Existe uma maneira inteligente de fazer isso?

Ou seja, quando um bloqueio de gravação é solicitado, o seguinte bloqueio de leitura não é concedido? Porque este é o problema enquanto o script2 espera por um bloqueio de gravação, existem outras instâncias do script1 que são capazes de obter o bloqueio de leitura e a instância do script2 espera para sempre

informação relacionada