forked from toolshed/abra
		
	
		
			
				
	
	
		
			21 lines
		
	
	
		
			474 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			474 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package limit // https://github.com/tidwall/limiter
 | |
| 
 | |
| // Limiter is for limiting the number of concurrent operations. This
 | |
| type Limiter struct{ sem chan struct{} }
 | |
| 
 | |
| // New returns a new Limiter. The limit param is the maximum number of
 | |
| // concurrent operations.
 | |
| func New(limit int) *Limiter {
 | |
| 	return &Limiter{make(chan struct{}, limit)}
 | |
| }
 | |
| 
 | |
| // Begin an operation.
 | |
| func (l *Limiter) Begin() {
 | |
| 	l.sem <- struct{}{}
 | |
| }
 | |
| 
 | |
| // End the operation.
 | |
| func (l *Limiter) End() {
 | |
| 	<-l.sem
 | |
| }
 |