一度に1つのセッションでのみ使用できる共有リソースがありますが、リソースが現在使用されていることを他のセッションに通知するにはどうすればよいですか?
JavaまたはCIでは、ミューテックスセマフォを使用してスレッド間を調整しますが、Railsでそれを実現するにはどうすればよいですか?新しい環境変数を定義し、それを使用してセッション間を調整しますか?
答えと一緒に小さなコードスニペットが非常に役立ちます。
一度に1つのセッションでのみ使用できる共有リソースがありますが、リソースが現在使用されていることを他のセッションに通知するにはどうすればよいですか?
JavaまたはCIでは、ミューテックスセマフォを使用してスレッド間を調整しますが、Railsでそれを実現するにはどうすればよいですか?新しい環境変数を定義し、それを使用してセッション間を調整しますか?
答えと一緒に小さなコードスニペットが非常に役立ちます。
Rails インスタンスは、Nginx または Apache を使用する場合 (スレッドのような共有メモリがない場合) に異なるプロセスで実行できるため、唯一の解決策はファイル ロックを使用することだと思います。
lock = File.new("/lock/file")
begin
lock.flock(File::LOCK_EX)
# do your logic here, or share information in your lock file
ensure
lock.flock(File::LOCK_UN)
end
Ruby には、プロセス間では機能しませんが、必要なことができるMutex クラスがあります。コード スニペットの例を示すのに十分な知識がないことをお詫びします。ドキュメントには次のように記載されています。「Mutex は、複数の同時スレッドから共有データへのアクセスを調整するために使用できる単純なセマフォを実装しています。」