書き込みと読み取りのロックを持つ2つのプロセスでflockを使用して飢餓を回避する

書き込みと読み取りのロックを持つ2つのプロセスでflockを使用して飢餓を回避する

スクリプトが 2 つあるので、script1 と script2 と呼びます。

スクリプト 1 は 2 分ごとにスケジュールされており、実行には 4 分かかります。スクリプト 2 は 30 分ごとにスケジュールされており、実行には 4 分かかります。現時点では、スクリプト内で flock を使用して、スクリプト 1 とスクリプト 2 が同時に実行されないようにしています。ただし、書き込みロックの排他性により、スクリプト 1 も同時に実行されません。

私の場合、script1 の並列処理と script2 との非同時実行を許可したいと思います。script1 のインスタンス間で読み取りロックを使用すると、script2 が実行できなくなるという問題が発生します。

それを実行する賢い方法はあるでしょうか?

つまり、書き込みロックが要求されると、次の読み取りロックは許可されません。これが問題であり、スクリプト2が書き込みロックを待機している間、読み取りロックを取得できるスクリプト1の他のインスタンスがあり、スクリプト2インスタンスは永遠に待機します。

関連情報