diff options
Diffstat (limited to 'models/working_pool.go')
-rw-r--r-- | models/working_pool.go | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/models/working_pool.go b/models/working_pool.go deleted file mode 100644 index c522de56..00000000 --- a/models/working_pool.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package models - -import ( - "sync" -) - -// workingPool represents a pool of working status which makes sure -// that only one instance of same task is performing at a time. -// However, different type of tasks can performing at the same time. -type workingPool struct { - lock sync.Mutex - pool map[string]*sync.Mutex - count map[string]int -} - -// CheckIn checks in a task and waits if others are running. -func (p *workingPool) CheckIn(name string) { - p.lock.Lock() - - lock, has := p.pool[name] - if !has { - lock = &sync.Mutex{} - p.pool[name] = lock - } - p.count[name]++ - - p.lock.Unlock() - lock.Lock() -} - -// CheckOut checks out a task to let other tasks run. -func (p *workingPool) CheckOut(name string) { - p.lock.Lock() - defer p.lock.Unlock() - - p.pool[name].Unlock() - if p.count[name] == 1 { - delete(p.pool, name) - delete(p.count, name) - } else { - p.count[name]-- - } -} |