mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com> Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com> Signed-off-by: Anusha Ragunathan <anusha@docker.com>
29 lines
373 B
Go
29 lines
373 B
Go
package libcontainerd
|
|
|
|
import "sync"
|
|
|
|
type queue struct {
|
|
sync.Mutex
|
|
fns map[string]chan struct{}
|
|
}
|
|
|
|
func (q *queue) append(id string, f func()) {
|
|
q.Lock()
|
|
defer q.Unlock()
|
|
|
|
if q.fns == nil {
|
|
q.fns = make(map[string]chan struct{})
|
|
}
|
|
|
|
done := make(chan struct{})
|
|
|
|
fn, ok := q.fns[id]
|
|
q.fns[id] = done
|
|
go func() {
|
|
if ok {
|
|
<-fn
|
|
}
|
|
f()
|
|
close(done)
|
|
}()
|
|
}
|