여러 프로세스가 동일한 파일에 액세스하는 동안 서로 방해하지 않도록 하려면 프로세스 간 파일 잠금이 필수적입니다. .NET에서는 FileShare.None과 함께 File.Open을 사용하여 이를 수행할 수 있습니다. Go에서 독점 파일 액세스를 어떻게 달성할 수 있나요?
fslock 패키지는 파일 잠금을 위한 크로스 플랫폼 솔루션을 제공합니다. Windows에서는 LockFileEx를 활용하고 *nix 시스템에서는 무리를 사용합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!