プロセス間ファイル ロックは、同じファイルにアクセスするときに複数のプロセスが相互に干渉しないようにするために不可欠です。 .NET では、これは File.Open と FileShare.None を使用して実現できます。 Go で排他的なファイル アクセスを実現するにはどうすればよいですか?
fslock パッケージは、ファイル ロックのためのクロスプラットフォーム ソリューションを提供します。 Windows では LockFileEx を使用し、*nix システムでは flock を使用します。
fslock を使用するには、まず新しいロック オブジェクトを作成します。
lock := fslock.New("file.txt")
これロック ファイルがまだ存在しない場合、コマンドはロック ファイルを作成します。
ファイルの排他ロックを取得するには、Lock メソッドを使用します:
lockErr := lock.Lock() if lockErr != nil { // Handle error }
または、LockWithTimeout を使用して、指定された期間内にロックを待機することもできます:
lockErr := lock.LockWithTimeout(10 * time.Second) if lockErr != nil { // Handle timeout }
ファイルの使用が完了したら、次を使用してロックを解除します。ロック解除:
lock.Unlock()
次のコード スニペットは、fslock パッケージを使用してファイルを排他的にアクセスできるようにロックする方法を示しています。
package main import ( "time" "fmt" "github.com/juju/fslock" ) func main() { lock := fslock.New("file.txt") lockErr := lock.TryLock() if lockErr != nil { fmt.Println("Failed to acquire lock:", lockErr) return } fmt.Println("Got the lock") time.Sleep(1 * time.Minute) // Release the lock lock.Unlock() }
以上がGo で排他的なファイル ロックを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。