1 つの仮想マシンで複数のアプリケーションを実行しています。1 つのサーバーで複数の仮想マシンを実行しています。そして、私は複数のサーバーを持っています。それらはすべて、Linux の共有フォルダーを使用してファイルを共有します。このファイルは、すべてのアプリケーションによって読み書きされます。書き込みプロセス中、アプリケーションはこのファイルを読み取ることができません。書き込みについても同様です。アプリケーションがファイルを読み取っている場合、アプリケーションはそのファイルに書き込むことができません。
書き込みプロセスが完了するのを待ってから読み取りを行うようにアプリケーションを同期するにはどうすればよいですか? またその逆も同様です。(VM内のアプリケーションは同期する必要があり、サーバー間でアプリケーションも同期する必要があります)
現在の実装では、「ファイル セマフォ」を使用しています。ファイルが書き込まれようとしている場合、アプリケーションは、共有フォルダーに追加のファイル (「file.semaphore」という名前を付けます) を作成して、セマフォを「取得」しようとします。「file.semaphore」ファイルが既に存在する場合、これはセマフォが別のアプリケーションによって既にロックされていることを意味します。このアプローチには、「ファイルが存在する」テストと「ファイルを作成する」操作がアトミックに実行されていることを確認できないという問題があります。このようにして、2 つのアプリケーションが「file.semaphore」ファイルをテストし、それが存在しないことを確認して、同時にファイルを作成しようとする可能性があります。