Add sync => go-sync
This commit is contained in:
		
							
								
								
									
										27
									
								
								sync/lock/lock.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								sync/lock/lock.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| // Package lock provides distributed locking | ||||
| package lock | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| // Lock is a distributed locking interface | ||||
| type Lock interface { | ||||
| 	// Acquire a lock with given id | ||||
| 	Acquire(id string, opts ...AcquireOption) error | ||||
| 	// Release the lock with given id | ||||
| 	Release(id string) error | ||||
| } | ||||
|  | ||||
| type Options struct { | ||||
| 	Nodes  []string | ||||
| 	Prefix string | ||||
| } | ||||
|  | ||||
| type AcquireOptions struct { | ||||
| 	TTL  time.Duration | ||||
| 	Wait time.Duration | ||||
| } | ||||
|  | ||||
| type Option func(o *Options) | ||||
| type AcquireOption func(o *AcquireOptions) | ||||
		Reference in New Issue
	
	Block a user