1

Citrix環境で実行されるアプリケーションがあります。アプリケーションは、異なるユーザーセッションの複数のユーザーが同時に実行できます。私のアプリケーションでは、すべてのユーザーセッションで相互に排他的である必要があるファイルに書き込んでいます。さまざまなユーザーセッションからのファイルへの書き込みを回避するためにMutexを試しましたが、一部のシナリオではさまざまなユーザーセッションがMutexオブジェクトが既に作成されているかどうかを検出できなかったため、Mutexの使用に失敗しました。

すべてのユーザーセッションで相互排除を実現するには、次のアプローチのどれが優れているかを誰かに教えてもらえますか?

  1. 名前付きパイプの使用:名前付きパイプがすでに存在する場合、アプリケーションは、パイプを開いたアプリケーションインスタンスによってパイプが閉じられるまで待機します。それ以外の場合は、名前付きパイプを作成して、ロックの取得を示します。
  2. ロックファイルの使用:ディスク上に通常のファイルを作成して、ロックの取得を示し、ロック解除を実行する必要がある場合は削除します。
4

1 に答える 1

3

ロックファイルを使用する必要はありません。組み込みのファイルシステム共有メカニズムを使用できます。

呼び出してCreateFile()ファイルを開くと、パラメータを使用してファイルを次に開く試みの共有アクセスを決定しdwShareModeます。たとえば、これを0に設定すると、他のプロセスはファイルを開くことができなくなります。

于 2011-03-07T09:14:39.920 に答える