4

私のプロジェクトは、複数の異なる物理マシンで実行する必要があり、それらの間でファイル システムを共有しています。このことから生じる 1 つの問題は、共通の単一ファイルへの書き込みを同期する方法です。スレッドを使用すると、ロックを使用して簡単に実現できますが、私のプログラムはさまざまなマシンに分散されたプロセスで構成されており、同期する方法がわかりません。理論的には、ファイルが現在開かれているかどうかを確認する方法や、ロックのような解決策で十分ですが、自分でこれを解読することはできません. Pythonの方法は特に高く評価されます。

4

2 に答える 2

0

複数の言語から書かれた場合でも、複数のプロセスに対してファイルをロックするメカニズムがあります。これには、オペレーティング システム固有のロック メカニズムが使用されます。Java JNI、C++ などの言語は、複数の OS プロセス [LTs-Lightweight Threads 内] 内でファイル アクセスを同期するために、これらのロック メカニズムを実装しています。

これについては、言語固有のネイティブ ファイル同期メカニズムを調べてください。

以下は Java ベースのサンプルです。

FileInputStream in = new FileInputStream(file);
try {
    java.nio.channels.FileLock lock = in.getChannel().lock();
    try {
        Reader reader = new InputStreamReader(in, charset);
        ...
    } finally {
        lock.release();
    }
} finally {
    in.close();
}

このロックは、OS に依存しない [システムや Windows などのように Unix で動作する] 必要があります。

この種のシナリオでは、アクセス制御を改善するためにダブル ロックを使用することをお勧めします。

于 2013-06-29T06:15:16.380 に答える