This repository has been archived on 2024-04-07. You can view files and clone it, but cannot push or open issues or pull requests.
summer-utils/utils/done-chan.go

31 lines
375 B
Go

package utils
import "sync"
type DoneChan struct {
C chan struct{}
m *sync.RWMutex
e bool
}
func NewDoneChan() *DoneChan {
return &DoneChan{
C: make(chan struct{}, 0),
m: &sync.RWMutex{},
}
}
func (d *DoneChan) Close() {
d.m.Lock()
if !d.e {
close(d.C)
}
d.m.Unlock()
}
func (d *DoneChan) Running() bool {
d.m.RLock()
defer d.m.RUnlock()
return !d.e
}