Избегайте голодания, используя flock с 2 процессами с блокировкой записи и чтения

Избегайте голодания, используя flock с 2 процессами с блокировкой записи и чтения

У меня есть два скрипта, назовем их script1 и script2.

Скрипт 1 запланирован каждые 2 минуты и его выполнение занимает 4 минуты, скрипт 2 запланирован каждые 30 минут и его выполнение занимает 4 минуты. В данный момент я использую flock в скриптах, чтобы гарантировать, что скрипт 1 и скрипт 2 никогда не будут выполняться одновременно. Однако исключительность блокировки записи приводит к тому, что скрипт 1 также никогда не будет выполняться одновременно.

В моем случае я хотел бы разрешить параллелизм script1 и неконкурентность с script2. Если я использую блокировку чтения между экземплярами script1, проблема в том, что я вызову голодание для script2, который никогда не будет выполнен.

Есть ли какой-нибудь разумный способ сделать это?

То есть, как только запрашивается блокировка записи, следующая блокировка чтения не предоставляется? Поскольку это проблема, пока script2 ждет блокировки записи, есть другие экземпляры script1, которые могут получить блокировку чтения, а экземпляр script2 ждет вечно

Связанный контент