いくつかの長いタスクを実行するlibクラス(「アップデーター」)があります。このタスクは手動で(ブラウザで)または2時間ごとに起動できます(このタスクの2時間ごとにスケジュールを実行するいつでもgemを実装しました)。
このタスクが DB で多くの作業を行っていることを見て、いくつかの同時実行エラーが発生する可能性があると思います (たとえば、 when がまだ機能している場合)。私は正しいですか?
次のような Updater クラスの疑似コードを使用して、ミューテックスを使用したソリューションを考えました。
module Updater
def start
#do some job
end
end
正しい解決策は、私が思うに、このようなものです
module Updater
def start
mutex.lock
#do some job
mutex.unlock
end
end
私の解決策は正しいですか?
同時実行に関する詳細情報を提供していただけますか (たとえば、Rails でミューテックスを正しく使用する方法、必要なものなど)。検索しましたが、適切な説明のあるものは何も見つかりませんでした。